ActiveMQ中Session设置的相关理解
参考博文:http://www.cnblogs.com/SzeCheng/p/4792084.html
参考博文:http://activemq.apache.org/producer-flow-control.html
名词解释:
P:生产者
C:消费者
服务端:P 或者 ActiveMQ服务
客户端:ActiveMQ服务 或者 C
客户端成功接收一条消息的标志是这条消息被签收。成功接收一条消息一般包括如下三个阶段:
1.客户端接收消息;
2.客户端处理消息;
3.消息被签收。
session = connection.createSession(Boolean.false, Session.CLIENT_ACKNOWLEDGE);##第一个参数控制事务,第二个参数控制消息
在不带事务的 Session 中,一条消息何时和如何被签收取决于Session的设置。
1.Session.AUTO_ACKNOWLEDGE
当客户端从 receive 或 onMessage成功返回时,Session 自动签收客户端的这条消息的收条。
2.Session.CLIENT_ACKNOWLEDGE
客户端通过调用消息的 acknowledge 方法签收消息。
message.acknowledge();
在带事务的 Session 中,签收自动发生在事务提交时。如果事务回滚,所有已经接收的消息将会被再次传送。其实这里的Session.CLIENT_ACKNOWLEDGE 用处不大。
session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE);
session.commit();
总结:
1、对于生产者:服务端端为P,客户端为ActiveMQ服务。 Session设置为AUTO_ACKNOWLEDGE 和CLIENT_ACKNOWLEDGE ,相对来说区别不是很大,根据情况考虑。
2、对于消费者:服务端为ActiveMQ为服务,客户端为C。 Session设置为AUTO_ACKNOWLEDGE ,接收到消息(receive 或 onMessage成功返回时),即为消费成功,然后从队列里移除该数据。不关心该数据有没有正确被处理成我们想要的结果;Session设置为CLIENT_ACKNOWLEDGE 时,必须手动调用acknowledge 方法才为消费成功,然后从队列里移除该条数据。
3、P和C的Session设置成哪种模式,互不影响。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

1.选择合适的客户端传输协议ActiveMQ支持多种客户端传输协议,包括STOMP、AMQP和OpenWire。根据您的应用程序需求选择合适的协议,以优化性能和可靠性。2.配置消息持久性持久性消息即使在服务器重新启动后也能持久化,而非持久性消息则不会。对于关键消息,选择持久性以确保可靠传递。演示代码://设置消息持久性MessageProducerproducer=session.createProducer(destination);producer.setDeliveryMode(Deliv

1.消息路由使用JMSSelectors过滤消息:使用JMSSelectors根据消息属性对传入消息进行筛选,仅处理相关消息。创建自定义消息路由器:扩展ActiveMQ的路由功能,通过编写自定义路由器将消息发送到特定目的地。配置轮询负载均衡:将传入消息均匀分布到多个消息消费者,提高处理能力。2.持久性启用持久性会话:确保即使应用程序或服务器发生故障,消息也能持久存储,避免丢失。配置死信队列(DLQ):将处理失败的消息移至DLQ,以便重新处理或分析。使用Journal存储:提高持久性消息的性能,减

ActiveMQ是Apache出品的一款开源消息中间件,它使用Java语言开发,具有可靠的消息传递、异步通信和集群支持等特点。ActiveMQ能够在不同的应用之间进行数据交换,并且支持多种消息协议,如JMS、AMQP和MQtT等。1.ActiveMQ的优势ActiveMQ是一款非常成熟的消息中间件,它具有以下优势:可靠的消息传递:ActiveMQ能够保证消息的可靠传递,即使在网络故障或服务器宕机的情况下,消息也不会丢失。异步通信:ActiveMQ支持异步通信,允许不同的应用之间进行非实时的通信。

设计手机手机maven 名前org.springframework.bootspring-boot-starter-parent1.5.4.RELEASEUTF-8UTF-81.8org.springframework.bootspring-boot-starterorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-启动器 starter-testtestorg.springframework

1.消息代理(Broker)ActiveMQ核心组件,负责处理所有消息流。它提供一个平台,应用程序可以连接、发送和接收消息。BrokerServicebroker=newBrokerService();broker.addConnector("tcp://0.0.0.0:61616");broker.start();2.消息队列在ActiveMQ中存储消息的逻辑概念容器。消息队列可以从多个生产者接收消息,并将其传递给多个消费者。Queuequeue=session.createQueue("my

1导入整合所需要的依赖:org.springframework.bootspring-boot-starter-activemq2创建application.properties文件spring.activemq.broker-url=tcp://127.0.0.1:61616spring.activemq.user=adminspring.activemq.password=adminserver.port=8080queue=myqueue3.自定义配置文件QueueConfig读取配置文件

1.JavaJMS简介JavaJMS是一个用于建立、发送和接收消息的Javaapi。它提供了可靠的消息传递功能,非常适合分布式系统和企业级应用程序。消息传递系统可以将消息从一个应用程序发送到另一个应用程序,即使这两个应用程序位于不同的机器上。2.JMSAPIJMSAPI定义了一系列接口和类,用于发送和接收消息。这些接口和类包括:javax.jms.ConnectionFactory:用于创建连接到JMS服务器的连接。javax.jms.Connection:连接到JMS服务器的连接。javax.

ActiveMQ是一个完全开源的Java消息服务器,也是Apache软件基金会旗下最受欢迎的项目之一。它遵循Java消息服务(JMS)规范,提供了一套用于构建分布式、异步和面向消息的应用程序的api。ActiveMQ以其可靠性、高效性和灵活性而著称,使其成为各种企业应用程序的理想选择。可靠性:ActiveMQ使用持久化存储机制来确保消息的可靠传递。当消息被发送到ActiveMQ时,它将被写入磁盘,即使服务器发生故障,这些消息也不会丢失。当服务器重新启动时,它会从持久化存储中恢复这些消息,并将其传
