概念:两种JMS的实现方法:
Topic==>消息主题 是发布/订阅 机制 一个消息产生多个对应 1:N publish/subscribe
Queue==>消息队列 是点到点 一个消息产生一个对应 1:1 point-to-point
activeMQ 的 Queue 的生产和消费
一、生产
1. 创建链接Q服务器
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
Connection connection = connectionFactory.createConnection();
connection.start();
2.创建session,并设置事务和策略
Session session = connection.createSession(事务参数,策略参数);
3.定位队列
Destination destination = session.createQueue(队列名称);
4.创建产品生产对象
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);//在Q关闭时会序列到默认或指定位置,重启后恢复
//producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
5.创建 message 并发送到Queue 中
Message message = session.createMessage("内容");
producer.send(message);
session.commit();//用于事务时
6.close
producer.close();
session.close();
connection.close();
二、消费 (需要实现MessageListener接口的onMessage(Message message)方法 )
1. 创建链接Q服务器
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
Connection connection = connectionFactory.createConnection();
connection.start();
2.创建session,并设置事务和策略
Session session = connection.createSession(事务参数,策略参数);
3.定位队列
Destination destination = session.createQueue(队列名称);
4.创建产品消费对象
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(this);
5.从Queue中取出消息
Message message = consumer.receive(1000);
session.commit();//用于事务时
6.close
consumer.close();
session.close();
connection.close();
分享到:
相关推荐
### Apache ActiveMQ Queue & Topic 详解 #### 一、特性及优势 Apache ActiveMQ 是一款高性能、功能丰富的消息中间件,具有以下显著特点: 1. **实现 JMS 1.1 规范**:支持 J2EE 1.4 及以上版本,这意味着它可以...
本案例代码包含了一个基本的ActiveMQ生产者和消费者的应用示例,帮助开发者理解如何使用ActiveMQ进行消息传递。 1. **JMS(Java Message Service)简介** JMS是Java平台上的一个标准API,它定义了生产、发送、接收...
Spring框架提供了对JMS的全面支持,包括对消息生产者和消费者的抽象,简化了与消息代理如ActiveMQ的集成。以下是如何在Spring中配置和使用ActiveMQ的基本步骤: 1. **添加依赖**:在项目的Maven或Gradle配置中,...
在分布式系统中,ActiveMQ作为消息代理,负责接收、存储和转发消息,从而实现生产者与消费者之间的解耦。 生产者和消费者是JMS中的核心概念。生产者是发送消息的应用,而消费者则是接收这些消息的应用。在ActiveMQ...
在本项目中,我们探讨的是如何使用SpringBoot集成Apache ActiveMQ来构建一个生产者和消费者的应用。SpringBoot以其简洁的配置和快速启动特性,成为现代Java应用开发的首选框架之一,而ActiveMQ则是流行的消息中间件...
return new ActiveMQQueue("myQueue"); } @Bean public Topic topic() { return new ActiveMQTopic("myTopic"); } @Bean public JmsListenerContainerFactory<?> queueListenerContainerFactory...
本文将深入探讨ActiveMQ中的队列(Queue)模式,包括事务、应答、转发以及MessageConsumer的receive阻塞消息处理方式。 ### 1. ActiveMQ队列(Queue)模式 在ActiveMQ中,队列是一种点对点的消息传递模型,每个...
ActiveMQ 队列消息过期时间设置和自动清除解决方案 ActiveMQ 是一个开源的消息队列系统,用于实现分布式系统之间的异步通信。在使用 ActiveMQ 时,消息过期时间设置和自动清除是一个非常重要的问题。本文将介绍 ...
在ActiveMQ中,有两种主要的消息传递模式:Queue和Topic。这两种模式都是基于JMS(Java Message Service)标准,用于在分布式环境中实现异步通信。理解它们的区别和应用场景至关重要。 **Queue(队列)模式** ...
return new ActiveMQQueue("MyQueue"); } @Bean public MessageProducer messageProducer(JmsTemplate jmsTemplate, Destination destination) { return new MessageProducer(jmsTemplate, destination); } }...
- demo项目中应该包含生产者和消费者的相关代码,演示如何创建消息、发送到Queue或Topic,以及如何接收和处理消息。 - 可能包含`@JmsListener`注解用于定义消息监听器,以及`JmsTemplate`用于发送消息。 8. **...
它定义了生产者(发送消息)、消费者(接收消息)和消息队列(存储消息)之间的交互方式。JMS提供两种消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。 2. **ActiveMQ安装与...
在IT行业中,消息队列(Message Queue)是分布式系统中常用的一种技术,它能有效地解耦各个服务,提高系统的响应速度和并发处理能力。ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它支持多种消息协议,如...
- **Spring**:Spring框架提供了对ActiveMQ的集成,可以方便地在Spring配置文件中声明消息代理和生产者、消费者bean,实现依赖注入。 - **Struts**:Struts作为MVC框架,负责处理用户请求并调用业务逻辑。通过...
本文将深入探讨ActiveMQ中的两种主要消息模式:队列(Queue)和主题(Topic)。 1. **队列(Queue)模式**: 队列模式遵循“发布/订阅”模型,但是一对一的。每个消息只能被一个消费者接收并处理。当一个消息被...
使用SpringBoot方式集成ActiveMQ ActiveMQ消息中间件的点对点模式point to point 消息队列 ...* queue中支持存在多个消费者,但是对一个消费者而言,只会有一个消费者可以消费,其他的消费者便不能消费此消息
它定义了生产、存储、消费和传输消息的标准接口,使得开发人员可以在多种消息中间件上工作,而无需关心其具体实现。 2. **ActiveMQ的核心组件**: - **Broker**:ActiveMQ的核心组件,负责接收、存储和转发消息。...
总之,这个 ActiveMQ 教程结合了理论知识和实践示例,可以帮助开发者快速掌握如何在 Spring 环境中使用 ActiveMQ 实现消息生产和消费,并通过源码分析进一步提升对消息中间件的理解。如果你想要构建一个高效、可扩展...
6. **消息生产者与消费者**:掌握如何使用ActiveMQ收发工具创建消息生产者发送消息,以及创建消息消费者接收消息。 7. **持久化与非持久化消息**:了解消息的持久性配置,这决定了消息在服务器重启后是否仍然可用。...
通过`@Value`注入队列和主题的名称,并分别定义`ActiveMQQueue`和`ActiveMQTopic`的@Bean,如以下示例所示: ```java @Component @EnableJms public class ConfigBean { @Value("${myqueue}") private String ...