-
关于ActiveMQ 对 队列进行应答0
代码如下
发送消息端,
我主要是想再发送消息端进行接收,也就是消费者那边过来的消息,等待的设计也设置了,但是返回还是异常,空指针
public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination sendDest = session.createQueue("q01"); Destination receDest = session.createQueue("q02"); MessageProducer producer = session.createProducer(sendDest); TextMessage message = session.createTextMessage(); message.setText("wangyuxiang"); message.setJMSReplyTo(receDest); //通过消息生产者发出消息 producer.send(message); String filter = "JMSCorrelationID = '" + message.getJMSMessageID() + "'"; MessageConsumer consumer = session.createConsumer(receDest, filter); TextMessage msg = (TextMessage) consumer.receive(10000); System.out.println(msg.getText()); if(msg!=null){ System.out.println(msg.getText()); }else{ System.out.println("对端信息为空!"); } session.commit(); session.close(); connection.close(); }
接收端
public class ReceiveMessage implements SessionAwareMessageListener { public void onMessage(Message message, Session session) throws JMSException { MessageProducer producer = session.createProducer(message.getJMSReplyTo()); TextMessage tm = session.createTextMessage(); tm.setJMSCorrelationID(message.getJMSMessageID()); tm.setText("Greeting!"); producer.send(tm); }
spring配置文件加载
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://localhost:61616</value> </property> </bean> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsConnectionFactory" /> </bean> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory" /> <property name="destinationName" value="q01" /> <property name="messageListener" ref="receiveMessage" /> </bean> <bean id="receiveMessage" class="com.cn.mq.receive.ReceiveMessage">
2012年12月10日 10:16
2个答案 按时间排序 按投票排序
-
你还是在你的main方法里设置监听吧
// 接收回复消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
if (message != null && message instanceof TextMessage) {
System.out.println("reply msg:"
+ ((TextMessage) message).getText());
}
} catch (JMSException e) {
e.printStackTrace();
}
}
});2012年12月10日 11:11
-
MessageConsumer consumer = session.createConsumer(receDest, filter)receDest
这里的receDest= queue("q02")
MessageProducer producer = session.createProducer(message.getJMSReplyTo());
这里的message.getJMSReplyTo() = queue("q01")
两个queue不一样,收不到的2012年12月10日 11:07
相关推荐
ActiveMQ队列(Queue)模式 在ActiveMQ中,队列是一种点对点的消息传递模型,每个消息只能被一个消费者接收并处理。这种模式确保了消息的有序性和幂等性,适合处理有顺序要求或者需要独占处理的任务。 ### 2. ...
另一种实现请求-应答的方式是使用ActiveMQ的临时队列。客户端创建一个临时队列,并将该队列的地址发送给服务端。服务端收到请求后,向这个临时队列发送响应。由于临时队列只在创建它的会话期间存在,这种方法可以...
ActiveMQ实战手册以介绍JMS和ActiveMQ的操作及配置为主,JMS(Java Message Service)是Java平台中对于面向消息中间件(MOM)的一种标准的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。...
在这个"activemq_basic.rar"压缩包中,我们可以预见到是一些关于ActiveMQ的基础教程或者示例代码,用于帮助开发者了解和学习如何使用ActiveMQ进行消息传递。 首先,让我们来了解一下JMS(Java消息服务)的基本概念...
ActiveMQ允许应用程序之间通过消息传递进行通信,而Spring则是一个广泛使用的Java企业级应用开发框架。下面我们将深入探讨这一主题。 首先,我们需要理解ActiveMQ的基本概念。ActiveMQ是Apache软件基金会的一个项目...
JMS 规范定义了一组接口,这些接口提供了一个标准的方式来进行分布式系统中的消息传递。下面将详细介绍 JMS 的基本构件。 ##### 1.1 连接工厂 (Connection Factory) **连接工厂** (`ConnectionFactory`) 是客户端...
这些内容为开发者提供了对ActiveMQ服务器进行有效管理和监控的方法。 ActiveMQ in Action是一本内容丰富、实用性强的技术指南。书中不仅涵盖了ActiveMQ的基础知识点,还包括了大量的高级用法和实战技巧,无论对于...
发布/订阅消息传递域中的目的地被成为主题,而在点对点消息传递域中,目的地被成为队列。 消息生产者是由会话创建的一个对象,用于把消息发送到一个目的地。消息消费者也是由会话创建的一个对象,它用于接收发送到...
`MQTest`可能是一个包含示例代码的项目,展示了如何在Java程序中使用ActiveMQ进行消息通信。通常,这会包括以下步骤: 1. **连接配置**:创建一个ConnectionFactory对象,指定ActiveMQ服务器的URL和其他连接参数。 ...
而在非事务性会话中,确认的发生取决于创建会话时的应答模式。 - **1.2.2 持久性 (Persistence)** - **定义**: 指示JMS提供者是否需要持久化存储消息。 - **功能**: `PERSISTENT`表示消息应被持久化存储,以防止...
确认发生在会话提交时(事务性会话)或根据应答模式(非事务性会话)自动或手动进行。确认模式包括: - AUTO_ACKNOWLEDGE:消息处理完成后自动确认。 - CLIENT_ACKNOWLEDGE:客户端通过消息的acknowledge方法手动...
确认消息指的是消息在被成功消费后进行确认,包括三种应答模式:自动确认(AUTO_ACKNOWLEDGE)、客户端确认(CLIENT_ACKNOWLEDGE)和有重复的确认(DUPS_ACKNOWLEDGE)。持久性指的是消息提交模式,分为PERSISTENT和...
ActiveMQ允许应用程序之间高效地交换数据,而Python通过STOMP(Simple Text Oriented Message Protocol)协议与ActiveMQ进行通信。 首先,我们需要为Python环境安装`stomp.py`库,这是一个用于Python的STOMP客户端...
这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅、点对点这两种。另外,通过结合...
在点对点域中,目的地被称为队列(queue);在发布/订阅域中,目的地被称为主题(topic)。 5. 消息生产者(Message Producer):由会话创建的对象,用于发送消息到目的地。 6. 消息消费者(Message Consumer):...
点对点消息传递域中的目的地称为队列,特点包括消息生产者和消费者之间没有时间上的相关性,每个消息只能有一个消费者。而发布/订阅消息传递域中的目的地称为主题,特点包括每个消息可以有多个消费者,生产者和消费...
在点对点(PTP)消息传递域中,队列作为目的地,确保每个消息只被一个消费者接收。在发布/订阅(Publish/Subscribe)模型中,主题作为目的地,允许多个消费者订阅并接收同一消息。 ##### 消息生产者(Message Producer) ...
3. **消息确认与应答机制**:消息队列通常提供消息确认机制,确保消息已被正确处理。例如,ACK(Acknowledgement)确认模式允许消费者在成功处理消息后发送确认,MQ在收到确认前会保留消息。 4. **高可用与持久化**...