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

apache camel

apache camel_使用Apache Camel发布/订阅模式相关推荐

  1. 使用Apache Camel发布/订阅模式

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

  2. kafka 发布-订阅模式_使用Apache Kafka作为消息系统的发布-订阅通信中的微服务,并通过集成测试进行了验证...

    kafka 发布-订阅模式 发布-订阅消息系统在任何企业体系结构中都起着重要作用,因为它可以实现可靠的集成而无需紧密耦合应用程序. 在解耦的系统之间共享数据的能力并不是一个容易解决的问题. 考虑一个企 ...

  3. 利用zookeeper实现发布订阅模式

    zookeeper应用 发布订阅 zk实现的方式是推拉结合,Client想服务端注册自己需要关注的节点,一旦节点的数据发生变更,那么Server会向对应的客户端发送Watcher事件通知,客户端接收到 ...

  4. ActiveMQ发布订阅模式

    ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...

  5. 五、交换机 与 发布/订阅模式、路由模式、主题模式

    RabbitMQ目录 文章目录 交换机 与 发布/订阅模式.路由模式.主题模式 1.Exchanges(交换机) 1.1. Exchanges 概念 1.2. Exchanges 的类型 1.3. 无 ...

  6. SpringBoot整合redis实现发布订阅模式

    Redis的发布订阅模式 发布订阅(Pub/Sub):目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接 ...

  7. python基于flask-socketio实现WebSocket消息广播(发布订阅模式)——贰

    场景 在应用中可能有一中场景,客户端A只需要发布消息,另一头多个客户端只需要接收客户端A发过来的消息,即发布订阅模式.也可用于大屏展示端,客户端只负责发布推送内容,广播接收端则进行消息接收.因此在fl ...

  8. Redis 笔记(10)— 发布订阅模式(发布订阅单个信道、订阅信道后的返回值分类、发布订阅多个信道)

    1. 发布-订阅概念 发布-订阅 模式包含两种角色,分别为发布者和订阅者. 订阅者可以订阅一个或者若干个频道(channel): 而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都可以收到此消 ...

  9. Redis 高级特性(2)—— 发布 订阅模式

    Redis 高级特性 -- 发布订阅 1. 发布-订阅介绍 "发布-订阅"模式包含两种角色,分别为发布者和订阅者.订阅者可以订阅一个或者若干个频道(channel),而发布者可以向 ...

最新文章

  1. libyuv库的使用
  2. 开发webpart时建立图像文件夹和CSS,js文件夹
  3. 查看centos中mysql的日志的命令_CentOS系统中常用查看日志命令
  4. C语言存储类、作用域、声明周期、链接属性
  5. 【LDPC系列2】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真(IEEE 802.16e标准协议基础矩阵)
  6. [html] DOM和BOM有什么区别?
  7. 故障error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: “
  8. 别管真假,先改密码!!!
  9. html怎么把view变成标签_html单选按钮默认选中怎么做?input标签的单选按钮用法实例...
  10. 刺客信条奥德赛缺少dll文件_《刺客信条 奥德赛》免费归来,单人冒险暗杀游戏,搞一搞喽...
  11. github本地库及clone常用命令
  12. 开源数据库系统之SQLite3.2.0、FireBird2.0 Alpha-1等
  13. time 测试一条命令的执行时间
  14. Java 实现Gbase数据库增删改查功能2
  15. 《胡雪岩 1》——读书笔记
  16. 英语知识系列:单词中元音字母发音规律
  17. GPS软件接收机(3)——跟踪
  18. [转载] 支持支付宝付款的四大国外主机
  19. 经营性网站必须要办理ICP增值电信业务经营许可证吗?
  20. java团队管理_团队管理的“五大核心要素”

热门文章

  1. JS原型链与instanceof底层原理
  2. JavaFX如何将WritableImage转换为Image
  3. Tomcat 使用apr优化
  4. 什么是G1垃圾回收算法
  5. Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件
  6. 漫画:什么是数据仓库
  7. ssm(Spring+Spring mvc+mybatis)Dao层配置sql的文件——DeptDaoMapper.xml
  8. Servlet使用适配器模式进行增删改查案例(IEmpService.java)
  9. sql server操作案例
  10. 数据库的嵌套查询和统计查询