0 0

关于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个答案 按时间排序 按投票排序

0 0

你还是在你的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
0 0

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队列(Queue)模式 在ActiveMQ中,队列是一种点对点的消息传递模型,每个消息只能被一个消费者接收并处理。这种模式确保了消息的有序性和幂等性,适合处理有顺序要求或者需要独占处理的任务。 ### 2. ...

    ActiveMQ_request-response

    另一种实现请求-应答的方式是使用ActiveMQ的临时队列。客户端创建一个临时队列,并将该队列的地址发送给服务端。服务端收到请求后,向这个临时队列发送响应。由于临时队列只在创建它的会话期间存在,这种方法可以...

    ActiveMQ 实战

    ActiveMQ实战手册以介绍JMS和ActiveMQ的操作及配置为主,JMS(Java Message Service)是Java平台中对于面向消息中间件(MOM)的一种标准的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。...

    activemq_basic.rar

    在这个"activemq_basic.rar"压缩包中,我们可以预见到是一些关于ActiveMQ的基础教程或者示例代码,用于帮助开发者了解和学习如何使用ActiveMQ进行消息传递。 首先,让我们来了解一下JMS(Java消息服务)的基本概念...

    activemq学习(2) spring+activemq

    ActiveMQ允许应用程序之间通过消息传递进行通信,而Spring则是一个广泛使用的Java企业级应用开发框架。下面我们将深入探讨这一主题。 首先,我们需要理解ActiveMQ的基本概念。ActiveMQ是Apache软件基金会的一个项目...

    activeMq 实战

    JMS 规范定义了一组接口,这些接口提供了一个标准的方式来进行分布式系统中的消息传递。下面将详细介绍 JMS 的基本构件。 ##### 1.1 连接工厂 (Connection Factory) **连接工厂** (`ConnectionFactory`) 是客户端...

    ActiveMQ_in_Action_中文

    发布/订阅消息传递域中的目的地被成为主题,而在点对点消息传递域中,目的地被成为队列。 消息生产者是由会话创建的一个对象,用于把消息发送到一个目的地。消息消费者也是由会话创建的一个对象,它用于接收发送到...

    MQTest jsm activeMQ

    `MQTest`可能是一个包含示例代码的项目,展示了如何在Java程序中使用ActiveMQ进行消息通信。通常,这会包括以下步骤: 1. **连接配置**:创建一个ConnectionFactory对象,指定ActiveMQ服务器的URL和其他连接参数。 ...

    activemq 集群配置文档

    而在非事务性会话中,确认的发生取决于创建会话时的应答模式。 - **1.2.2 持久性 (Persistence)** - **定义**: 指示JMS提供者是否需要持久化存储消息。 - **功能**: `PERSISTENT`表示消息应被持久化存储,以防止...

    ActiveMQ使用教程

    确认发生在会话提交时(事务性会话)或根据应答模式(非事务性会话)自动或手动进行。确认模式包括: - AUTO_ACKNOWLEDGE:消息处理完成后自动确认。 - CLIENT_ACKNOWLEDGE:客户端通过消息的acknowledge方法手动...

    ActiveMQ(中文)参考手册

    确认消息指的是消息在被成功消费后进行确认,包括三种应答模式:自动确认(AUTO_ACKNOWLEDGE)、客户端确认(CLIENT_ACKNOWLEDGE)和有重复的确认(DUPS_ACKNOWLEDGE)。持久性指的是消息提交模式,分为PERSISTENT和...

    工具使用篇——python操作ActiveMq

    ActiveMQ允许应用程序之间高效地交换数据,而Python通过STOMP(Simple Text Oriented Message Protocol)协议与ActiveMQ进行通信。 首先,我们需要为Python环境安装`stomp.py`库,这是一个用于Python的STOMP客户端...

    activemq的几种基本通信方式总结

    这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅、点对点这两种。另外,通过结合...

    ActiveMQ(中文)参考手册.pdf

    在点对点域中,目的地被称为队列(queue);在发布/订阅域中,目的地被称为主题(topic)。 5. 消息生产者(Message Producer):由会话创建的对象,用于发送消息到目的地。 6. 消息消费者(Message Consumer):...

    ActiveMQ详细教程

    点对点消息传递域中的目的地称为队列,特点包括消息生产者和消费者之间没有时间上的相关性,每个消息只能有一个消费者。而发布/订阅消息传递域中的目的地称为主题,特点包括每个消息可以有多个消费者,生产者和消费...

    12_总结一下消息队列相关问题的面试技巧.zip

    3. **消息确认与应答机制**:消息队列通常提供消息确认机制,确保消息已被正确处理。例如,ACK(Acknowledgement)确认模式允许消费者在成功处理消息后发送确认,MQ在收到确认前会保留消息。 4. **高可用与持久化**...

Global site tag (gtag.js) - Google Analytics