activemq queue搭建

其他都一样,只记录不一样的地方

 

context.xml中jndi的部分,

  <Resource name="jms/queue/MyQueue"
        auth="Container"
        type="org.apache.activemq.command.ActiveMQQueue"
        factory="org.apache.activemq.jndi.JNDIReferenceFactory"
        physicalName="MY.TEST.FOO.QUEUE"/>

 

 

发送消息,通过servlet

  InitialContext initCtx = new InitialContext();
		    Context envContext = (Context) initCtx.lookup("java:comp/env");
		    ConnectionFactory connectionFactory = (ConnectionFactory) envContext.lookup("jms/ConnectionFactory");
		    Connection connection = connectionFactory.createConnection();
		    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		    MessageProducer producer = session.createProducer((Destination) envContext.lookup("jms/queue/MyQueue"));
		 
		    Message testMessage = session.createMessage();
		    testMessage.setStringProperty("testKey", "testValue111");
		    producer.send(testMessage);

 

 

接受消息通过main方法

package com.activemqtest;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Reciever2 {

	protected Queue queue;

	protected String queueName = "MY.TEST.FOO.QUEUE";

	protected String url = "tcp://192.168.91.128:61616";

	protected int ackMode = Session.AUTO_ACKNOWLEDGE;

	public static void main(String[] args) {
		Reciever2 rec = new Reciever2();
		try {
			rec.run();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void run() throws JMSException {

		ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
				url);
		QueueConnection connection = (QueueConnection) connectionFactory
				.createTopicConnection();

		connection.start();
		MessageConsumer consumer = null;
		Session session = connection.createQueueSession(false,
				Session.AUTO_ACKNOWLEDGE);
		queue = session.createQueue(queueName);
		consumer = session.createConsumer(queue);

		System.out.println(" Waiting for message (max 3) ");

		for (int i = 0; i < 3; i++) {
			Message message = consumer.receive();
			processMessage(message);

		}

		System.out.println("Closing connection");
		consumer.close();
		session.close();
		connection.close();

	}

	public void processMessage(Message message) {

		try {

			 if (message instanceof TextMessage) {
                 TextMessage textMessage = (TextMessage) message;
                 String text = textMessage.getText();
                 System.out.println("Received: " + text);
             } else {
                 System.out.println(message.getStringProperty("testKey"));
             }

		} catch (Exception e) {

			e.printStackTrace();

		}
	}
}

 

 

consumer可以不online,producer发送消息后,consumer再启动也可以收到消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值