免责声明:.Net尝试学习grails。
我已经习惯使用分布式和持久的消息传递层构建服务,以便与NServiceBus和MSMQ进行服务间通信。
对于任何不熟悉的人,NServiceBus只需通过引用程序集提供消息传递,进行快速依赖注入。
然后,为了使用它,我可以简单地通过对命令执行类似bus.Send("location", messageObject)
的操作来发送消息,并为发布/订阅情况执行bus.publish(messageObject)
。然后,我所要做的就是创建一个"倾听"对于我的messageObject类型,我收到消息。
它还提供了一些称为超时的东西 - 基本上会在x个时间后触发一些事件处理程序(对于发送提醒或按计划执行某些操作非常有用)。
我正在寻找类似的东西。我发现一篇文章建议使用grails本身作为ESB,但我不知道grails如何提供可靠和持久的消息传递。我的意思是 - 如果服务A向服务B发送消息,服务B关闭,服务A将在稍后重试。一个更复杂的例子是一个传奇 - 客户端启动传奇,服务A执行某些操作,服务B执行某些操作,在他们完成处理时向传奇报告,然后传奇发送消息知道服务A和服务B都完成了他们的工作,以便为C服务,因此它可以做到这一点。
PS:如果这个问题太宽泛,请告诉我如何改进它。我刚开始学习grails,所以我甚至不确定我需要从哪里开始研究。
编辑:意识到我忘了添加文章 - http://jlorenzen.blogspot.com/2009/03/grails-create-app-esb
答案 0 :(得分:1)
我可能会使用一些带有Grails插件的AMQP队列(如RabbitMQ)。
虽然这不会在MSMQ上为您提供NServiceBus的所有功能,但您将获得所需的持久消息传递行为。你放弃/必须自己实现的事情包括一些重试逻辑,传奇和消息幂等。