我已经阅读了 rabbitMQ 插件的优秀文档。但是,我仍然对一些事情感到困惑。
设想
我的应用程序将从用户那里上传文件,对文件执行各种操作,并相应地在域对象上设置某些属性。其中一些工作可能是劳动密集型的,所以我正在使用队列。我设想请求被排队,消费者从队列中提取请求并使用它们。
问题
我想在队列中存储一个域对象。我这样做rabbitSend 'myqueue', colorObj
:colorObj
是域类的对象Color
但是,在ColorService
handleMessage(...)
我从队列中获取项目时,项目不是类型Color
。请注意,在 rabbitMQ 仪表板上,我可以看到正在插入队列中的项目,所以我的队列启动config.groovy
很好(我正在使用amq.direct
)
- 如何从队列中发送和获取域对象?
- 从我迄今为止看到的行为来看,
handleMessage
不需要实例化。即使我不调用它,ColorService
它仍然handleMessage
会自行执行。这是正常行为吗?
下面是代码:
控制器
Color colorObj = colorService.newRequest(params, request.getFile('color.filename')
if (colorObj.validate)
rabbitSend 'myqueue', colorObj
...
服务
class ColorService {
static rabbitQueue = 'myqueue'
void handleMessage(message) {
println "came in message: " + message instanceof Color //this prints false
}
}