使用Apache Camel发布/订阅模式

发布/订阅是一种简单的消息传递模式,其中,发布者将消息发送到某个频道,而无需知道谁将接收消息。 然后,通道负责将消息的副本传递给每个订户。 此消息传递模型允许创建松耦合和可伸缩的系统。

这是一种非常常见的消息传递模式,有许多方法可以在Apache Camel中创建一种pub-sub。 但是请记住,它们都是不同的并且具有不同的特征。 从最简单到更复杂,这是一个列表:

  • 组播 –仅与静态的订阅者列表一起使用,可以并行地将消息传递给订阅者,如果其中一个订阅者发生故障,则停止或异常继续。
  • 收件人列表 –与多播类似,但是允许在运行时(例如,在消息头中)定义订户。
  • SEDA –该组件使用BlockingQueue提供异步SEDA行为。 设置multipleConsumers选项后,可以将其用于异步发布订阅消息。 如果没有按时使用邮件,它还可以阻止已满的邮件,设置队列大小或超时发布。
  • VM –与SEDA相同,但是可以跨多个CamelContext,只要它们在同一JMV中即可。 这是在Web容器中的Web应用程序之间或OSGI容器中的捆绑软件之间发送消息的一种很好的机制。
  • Spring-redis – Redis具有pubsub功能,可以将消息发布到多个接收者。 可以通过名称或使用模式匹配来订阅频道。 当使用模式匹配时,订户将从所有与模式匹配的信道接收消息。 请记住,在这种情况下,如果多个模式与发送消息的同一通道匹配,则可能会收到一条以上的消息。
  • JMS(ActiveMQ) –这可能是进行发布订阅(包括持久订阅的最佳方法。 有关完整列表功能检查ActiveMQ的网站。
  • Amazon SNS / SQS –如果您需要一个真正可扩展且可靠的解决方案,那么SNS是必经之路。 为SQS队列订阅该主题,将其变成持久订阅者,并允许以后轮询消息。 在这种情况下要记住的重要一点是,它不是很快,最重要的是,Amazon不保证您的消息按FIFO顺序排列。

也有不那么流行的Camel组件提供发布-订阅消息传递模型:

  • websocket –它使用Eclipse Jetty Server,并且可以将消息发送到当前连接的所有客户端。
  • hazelcast – SEDA实现了工作队列,以支持异步SEDA体系结构。
  • guava-eventbus –骆驼和Google Guava EventBus基础架构之间的集成桥。
  • spring-event –提供对Spring ApplicationEvent对象的访问。
  • eventadmin –在OSGi环境上接收OSGI事件。
  • xmpp –实现XMPP(Jabber)传输。 在聊天室中发布消息也是pub-sub;)
  • mqtt –与兼容MQTT的消息代理进行通信。
  • amqp –使用Qpid项目的客户端API支持AMQP协议。
  • javaspace –一种用于处理任何与JavaSpace兼容的实现的传输。

您可以命名其他任何方式来进行发布-订阅吗?

参考:来自OFBIZian博客的JCG合作伙伴 Bilgin Ibryam的Apache Camel发布/订阅模式

翻译自: https://www.javacodegeeks.com/2013/05/publishsubscribe-pattern-with-apache-camel.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值