ActiveMQ处理ObjectMessage队列

控制层

//新增队列(发送ObjectMessage消息)
@RequestMapping("/sendObjectMessage")
@ResponseBody
public String sendObjectMessage(String connectionFactory,String queueName,Student student) {
	String msg=null;
	try {
		msg = mQQueueService.sendObjectMessage(connectionFactory, queueName,student);
	} catch (JMSException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return msg;
}

//消费队列(获取ObjectMessage消息)
@RequestMapping("/achieveObjectMessage")
@ResponseBody
public Student achieveObjectMessage(String connectionFactory,String queueName) {
	Student student=null;
	try {
		student = mQQueueService.achieveObjectMessage(connectionFactory, queueName);
	} catch (JMSException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return student;
}

业务层

// 发送ObjectMessage演示
@Override
public String sendObjectMessage(String connectionFactory, String queueName, Student student) throws JMSException {
	ConnectionFactory cf = new ActiveMQConnectionFactory(connectionFactory);
	Connection connection = cf.createConnection();
	connection.start(); //
	// 创建会话(需要创建事务,消息自动确认)
	Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
	// 循环创建队列
	Destination destination = session.createQueue(queueName);
	// 创建生产者,即消息发送方。
	MessageProducer producer = session.createProducer(destination);
	// 这里以一个学号对应一个学生为例
	// key表示学号,key对应的value表示学生姓名
	// 假如设置属性是班级编号1203
	ObjectMessage objectMessage = session.createObjectMessage();
	objectMessage.setStringProperty("msg", "新增学生。");
	objectMessage.setObject(student);
	producer.send(objectMessage);
	try {
		session.commit();
	} finally {
		session.close();
		connection.close();
	}
	return "SUCCESS";
}
// 获取ObjectMessage演示
@Override
public Student achieveObjectMessage(String connectionFactory, String queueName) throws JMSException {
	ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(connectionFactory);
	//允许用户关闭安全检查,并相信所有类。
	cf.setTrustAllPackages(true);
	Connection connection = cf.createConnection();
	connection.start();
	// 确认消息被接受
	final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
	Destination destination = session.createQueue(queueName);
	MessageConsumer consumer = session.createConsumer(destination);
	ObjectMessage objectMessage = (ObjectMessage) consumer.receive();
	//获取学生
	Student student = (Student) objectMessage.getObject();
	//如果根据队列名称查询到了这个学生,则消费队列。
	if (student != null) {
		session.commit();
	}
	try {
		return student;
	} finally {
		session.close();
		connection.close();
	}
}

新增队列

消费队列

启动ActiveMQ后台

//初始账号:admin
//初始密码:admin
http://192.168.0.113:8161/admin

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值