前言:ActiveMQ消息模式点对点编码
运行:先运行消费者在开启消息生产者即可接收到消息
消息生产者
/**
* @摘要 测试发送单条数据的类
*/
public class ZMQOneSendTest{
public static void main(String[] args) throws Exception {
//1 .开始建立连接时间
Long nStartTime = System.currentTimeMillis();
// 2.建立连接工厂
org.apache.activemq.ActiveMQConnectionFactory nFactory = new org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616");
// 3.用工厂建立Connection连接
javax.jms.Connection nConnection = nFactory.createConnection();
// 4.创建会话Session,不启动事务,签收模式为自动确认模式
javax.jms.Session nSession = nConnection.createSession(false,javax.jms.Session.AUTO_ACKNOWLEDGE);
// 5.创建队列
javax.jms.Destination nDestination = nSession.createQueue("123");
// 6.创建生产者
javax.jms.MessageProducer nProducer = nSession.createProducer(nDestination);
// 7.设置持久化
nProducer.setDeliveryMode(javax.jms.DeliveryMode.PERSISTENT);
// 8.启动连接
nConnection.start();
// 9.查询开始时间
Long nStartSelectTime = System.currentTimeMillis();
// 10.查询结束时间
Long nEndSelectTime = System.currentTimeMillis();
// 11.创建消息
javax.jms.TextMessage nMessage = nSession.createTextMessage();
nMessage.setText("我是发送的数据");
// 12.发送开始时间
Long nStartSendTime = System.currentTimeMillis();
// 13.生产者发布消息
nProducer.send(nMessage);
// 14.消息结束时间
Long nEndSendTime = System.currentTimeMillis();
// 15.打印消息
System.out.println("已发送消息 "+nMessage);
// 16.关闭发布者、会话、连接
nProducer.close();
nSession.close();
nConnection.close();
// 17.计算时间
System.out.println("查询消息时间 "+(nEndSelectTime-nStartSelectTime));
System.out.println("发送消息时间"+(nEndSendTime-nStartSendTime));
System.out.println("总时间"+(nEndSendTime-nStartTime));
}
}
消息消费者
public class ZMQReadTest {
public static void main(String[] args) throws javax.jms.JMSException {
// 1.建立连接工厂
org.apache.activemq.ActiveMQConnectionFactory nFactory = new org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616");
// 2.用工厂建立Connection连接
javax.jms.Connection nTopicConnection = nFactory.createConnection();
// 3.创建会话Session,不启动事务,签收模式为自动确认模式
javax.jms.Session nSession = nTopicConnection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
// 4.创建队列
javax.jms.Destination nDestination = nSession.createQueue("123");
// 5.创建消费者
javax.jms.MessageConsumer nConsumer = nSession.createConsumer(nDestination);
// 6.为消费者添加消息监听器,onMessage方法接收消息
nConsumer.setMessageListener(new javax.jms.MessageListener() {
public void onMessage(javax.jms.Message nMessage) {
try {
if (nMessage instanceof javax.jms.TextMessage) {
String nTextMessage = ((javax.jms.TextMessage) nMessage).getText();
System.out.println("收到的消息:" + nTextMessage);
}
} catch (javax.jms.JMSException e) {
e.printStackTrace();
}
}
});
// 7.开启连接
nTopicConnection.start();
}
}
分享到:
相关推荐
在点对点消息传递域中,目的地被称为队列(queue),消息只能被一个消费者消费;而在发布/订阅消息传递域中,目的地被称为主题(topic),消息可被多个消费者消费。 消息生产者是会话创建的对象,用于将消息发送到...
根据 JMS 1.0.2 规范,有两种消息传递模型:点对点 (Point-to-Point, PTP) 和发布/订阅 (Publish/Subscribe, PUB/SUB)。 - **点对点** 模型的特点包括: - 每个消息只能有一个消费者。 - 消费者和生产者之间没有...
5. **消息类型和模式**:ActiveMQ支持点对点(Queue)和发布/订阅(Topic)两种消息模式。点对点模式下,消息仅被一个消费者接收;发布/订阅模式下,消息可以被多个订阅者接收。 6. **高级特性**:ActiveMQ还提供了...
在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...
在 JMS 中,主要有两个消息模型:点对点(Queue)和发布/订阅(Topic)。点对点模型中,消息由一个生产者发送到队列,一个消费者接收并处理该消息,一旦被消费,消息就会从队列中移除。而发布/订阅模型中,消息发布...
综上所述,《ActiveMQDemo实战.pdf》涉及的知识点涵盖了消息队列的基本概念、ActiveMQ的基本使用、JMS API的编程模式、消息的生产与消费流程、以及消息服务的配置和安全性考虑。对于IT行业的专业人员来说,这些知识...
- **定义**:ActiveMQ 是一个开源的消息中间件,它支持多种消息传递模式,如点对点 (PTP) 和发布/订阅 (Pub/Sub)。 - **特点**: - 支持多种协议,如 AMQP、STOMP、MQTT 等。 - 提供持久化存储选项,包括 KahaDB ...
- **消息模型**:ActiveMQ支持多种消息模型,如点对点(Queue)和发布/订阅(Topic),分别适用于一对一和一对多的通信场景。 - **协议支持**:ActiveMQ支持多种消息协议,如开放消息传递接口(Openwire)、简单...
本文介绍了消息队列的基本概念和作用,重点讲解了ActiveMQ5.x的主要特性和SpringBoot2.x中如何整合及实现点对点消息的实战案例。通过对这些知识点的理解和实践,开发者能够更好地理解和应用消息队列技术,提升系统...
ActiveMQ对JMS进行了实现,支持多种消息模型,如点对点(Queue)和发布/订阅(Topic)。 3. **ActiveMQ特性**: - **持久化**:ActiveMQ提供持久化的消息存储,即使在服务器故障后也能保证消息不丢失。 - **网络...
1. **JMS 概念**:JMS 提供了两种消息模型——点对点(Queue)和发布/订阅(Topic)。点对点模式下,每个消息仅被一个消费者接收;发布/订阅模式下,消息可被多个订阅者接收。 2. **创建连接**:使用 JMS API 创建与...
ActiveMQ支持发布/订阅、点对点等多种消息模式,以及事务处理、消息持久化等功能,确保了消息的可靠传输。 **二、SpringBoot整合ActiveMQ** 1. **依赖引入** 在SpringBoot项目中,我们需要添加ActiveMQ的依赖。在...
这个"activeMQ.zip"压缩包包含了一个ActiveMQ的实战示例,涵盖了点对点(Peer-to-Peer, P2P)通信模式和发布/订阅(Publish/Subscribe, Pub/Sub)模型,这两种是消息队列中最常见的通信模式。 点对点模式是基于JMS的...
- **队列(Queue)**:点对点模式,每条消息仅由一个消费者接收。 3. **Quartz介绍**:Quartz是一个开源的作业调度框架,可以精确控制任务的执行时间,例如定期执行数据备份、清理日志等任务。 4. **Quartz的主要...
4. **定义Destination**:定义消息的目的地,可以是Queue(点对点)或Topic(发布/订阅模型)。 5. **配置MessageListenerContainer**:创建`DefaultMessageListenerContainer`,用于监听消息。可以设置并发消费者...
在点对点模型中,如果消费者在接收到消息后没有确认,那么消息将保留在队列中,直到确认或超时。在发布/订阅模型中,消息一旦发布就不可撤销,但可以通过设置消息的持久性来确保即使代理服务器重启也能恢复未消费的...
在Java面试中,对ActiveMQ的理解和应用能力往往是衡量开发者技能的重要标准。下面将详细讨论ActiveMQ的核心概念、功能、应用场景以及面试中可能涉及的问题。 1. **核心概念** - **消息队列**:ActiveMQ中的消息...
ActiveMQ是一款功能强大的开源消息代理,支持多种协议,如OpenWire、STOMP、AMQP、MQTT等,适用于多种应用场景,包括点对点和发布/订阅模式的消息传递。其特性包括:高可用性、持久化、事务处理、安全控制以及丰富的...
- Destination:消息的目的地,可以是Queue(点对点通信)或Topic(发布/订阅模式)。 4. **ActiveMQ的使用场景** - 异步处理:将耗时操作从主业务流程中分离,提高系统响应速度。 - 负载均衡:通过多个Consumer...