是否有消费者不消费事件的服务终端解决方案? (多个消费者接受相同的活动)

时间:2009-11-13 08:18:09

标签: .net php messaging producer-consumer servicebus

我正在阅读ActiveMQ,这似乎是一个很好的servicebus实现,生产者可以发布消息,其他进程可以接收它们。

然而,在阅读文档时,看起来制作人必须在发送消息时给出“端点”。

我宁愿反过来:我的制作人发布事件'导入作业开始','导入作业完成'等 任何对某些类别的活动感兴趣的消费者都可以订阅和接收这些活动。然而,消费者不应该消费该事件,因为它不再被发送给其他订户。

拥有这种财产的最佳产品是什么?

约束: - 它应该至少具有.Net和php的接口 - 它应该跨机器边界工作

由于

3 个答案:

答案 0 :(得分:2)

我认为您目前正在发布一个队列,这通常意味着1个消费者会消费该消息并处理该事件。如果您需要有超过1个消费者接收事件,您应该使用主题。

使用主题时,所有订阅的消费者都会收到您发布的活动。

看看这个:http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html

答案 1 :(得分:0)

不知道最好的,但我在项目中使用了D-Bus,这是像你这样的任务。检查它的文档。

对实施的引用:

C# implementation of D-Bus

Binding of PHP and DBus

我希望能帮到你。

答案 2 :(得分:0)

如果您可以将服务托管在云上,Microsoft's ServiceBus可以通过主题/订阅模型启用该方案。在此模型下,您的生产者向主题(所有实际目的的队列)发送消息,并且订阅它的任何人都将获得该消息的副本。对于更高级的方案,您甚至可以创建规则和过滤器来定义哪些客户端获取哪些消息。这里有.NET和REST API。

您可以查看功能here的完整说明。该文档包含有关如何使用客户端库的示例代码。关于如何在Java和PHP中使用servicebus,还有samples,以防您需要支持这些语言。