На самом деле не пробую это, я должен верить, что это проблема синтаксиса. То, что вы действительно делаете с этим анонимным классом, это передача замыкания, содержащего весь код MessageCreator, в конструктор класса MessageCreator. В Groovy замыкания можно передавать как последний аргумент функции, просто поместив ее после имени функции или первых аргументов в скобках.
SomeFunction( arg1, arg2) { some code }
совпадает с
SomeFunction( arg1, arg2, { some code } )
Что вам действительно нужно, так это преобразовать замыкание в анонимный экземпляр MessageCreator, который, я полагаю, вы можете выполнить:
asyncJmsTemplate.send("test.RequestQ",
{ code in the anonymous block } as MessageCreator );
Я обнаружил это в StackOverflow, хотя этот вопрос плохо создан. Прочитайте все ответы, и вы должны увидеть что-то подходящее: Лучшая идиома Groovy Closure, заменяющая внутренние классы Java?