我正在寻找PHP项目中的RabbitMQ替代品。到目前为止我考虑的两个选项是Kestrel和Qpid(如果我们决定坚持使用AMQP(我想避免))。在RabbitMQ中,您可以向交换(目标)发送消息,该消息决定应将消息传递到哪些队列或主题(以JMS术语)。阻止我选择STOMP服务器(ActiveMQ / Apollo或HornetQ)的原因是我无法确定STOMP是否有可能向目的地发送消息以便将消息传递到多个队列(在JMS中)项)?发件人不应该知道邮件应该传递到哪个队列。
谢谢。
答案 0 :(得分:1)
您可以在ActiveMQ中使用名为Composite Destinations的东西来使用Stomp或标准JMS客户端执行此操作。 Stomp目标以/ queue / string为前缀,然后是目标名称。您还可以在ActiveMQ中使用Virtual Destinations。当然,ActiveMQ中的Destination字符串可以支持wildcards。
答案 1 :(得分:1)
在HornetQ中,您可以使用Diverts(独占和非独占)。 STOMP消息将到达原始队列,但随后将被透明地转移到hornetq-configuration.xml中配置的相应队列。
您还可以应用带有转移的过滤器,以便将邮件分隔到适当的队列中。
答案 2 :(得分:0)
自己面对同样的问题,并使用ActiveMQ XML中的以下配置解决。
<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<compositeQueue name="MY.QUEUE">
<forwardTo>
<queue physicalName="FOO" />
<queue physicalName="BAR" />
</forwardTo>
</compositeQueue>
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors>