JMS Helloworld

1、生产者

package com.demo.helloworld;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JMSProducer {
	// 默认连接用户名
	private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
	// 默认连接密码
	private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
	// 默认连接地址
	private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;
	// 队列名称
	private static final String QUENENAME = "Jack";
	public static final int SENDNUM = 10;

	// 连接工厂
	static ConnectionFactory connectionFactory;
	// 连接
	static Connection connection = null;
	// 会话 接受或者发送消息的线程
	static Session session;
	// 消息的目的地
	static Destination destination;
	// 消息生产者
	static MessageProducer messageProducer;
	// 创建连接
	static {
		// 实例化连接工厂
		connectionFactory = new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD,
				JMSProducer.BROKEURL);
		try {
			// 通过连接工厂获取连接
			connection = connectionFactory.createConnection();
			// 启动连接
			connection.start();
			// 创建session
			session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			// 创建一个名称为Jack的消息队列
			destination = session.createQueue(JMSProducer.QUENENAME);
			// 创建消息生产者
			messageProducer = session.createProducer(destination);
		} catch (JMSException e) {
			System.out.println("创建连接异常");
		}
	}

	// 发送消息
	public static void sendMessage(String message) {
		try {
			TextMessage txtMsg = session.createTextMessage(message);
			messageProducer.send(txtMsg);
			session.commit();
		} catch (JMSException e) {
			System.out.println("消息发送异常");
		}
	}
}

2、消费者

package com.demo.helloworld;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JMSConsumer {
	// 默认连接用户名
	private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
	// 默认连接密码
	private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
	// 默认连接地址
	private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;
	// 队列名称
	private static final String QUENENAME = "Jack";

	static ConnectionFactory connectionFactory;// 连接工厂
	static Connection connection = null;// 连接

	static Session session;// 会话 接受或者发送消息的线程
	static Destination destination;// 消息的目的地

	static MessageConsumer messageConsumer;// 消息的消费者
	static {
		// 实例化连接工厂
		connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD,
				JMSConsumer.BROKEURL);
		try {
			// 通过连接工厂获取连接
			connection = connectionFactory.createConnection();
			// 启动连接
			connection.start();
			// 创建session
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			// 创建一个连接Jack的消息队列
			destination = session.createQueue(JMSConsumer.QUENENAME);
			// 创建消息消费者
			messageConsumer = session.createConsumer(destination);
		} catch (JMSException e) {
			System.out.println("创建连接异常");
		}
	}

	// 消费消息
	public static void consume() {
		try {
			while (true) {
				TextMessage textMessage = (TextMessage) messageConsumer.receive();
				if (textMessage != null) {
					System.out.println(textMessage.getText());
				} else {
					break;
				}
			}
		} catch (JMSException e) {
			System.out.println("消息接收异常");
		}
	}
}

3、测试

package com.demo.helloworld;

import org.junit.Test;

public class JMSTest {
	@Test
	public void testProducer() {
		JMSProducer.sendMessage("我发送消息了哦");
	}

	@Test
	public void testConsumer() {
		JMSConsumer.consume();
	}
}

 

转载于:https://my.oschina.net/u/3416597/blog/1554792

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值