activemq消息生产者与消息消费者简单例子
消息生产者HelloQueueProducer.java
package activemq.test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class HelloQueueProducer {
public static void sendMessage(String activemq_url, String activemq_user, String activemq_pw, String msg, String queue_name) {
try {
//通过username,password,url创建连接工厂接口
ConnectionFactory factory = new ActiveMQConnectionFactory(activemq_user, activemq_pw, activemq_url);
//通过连接工厂创建一个新的连接接口
Connection connection = factory.createConnection();
//打开连接
connection.start();
//通过连接接口创建一个会话接口 消息应答模式:Session.AUTO_ACKNOWLEDGE
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//会话接口创建有关主题的目标接口
Destination destination = session.createQueue(queue_name);
//会话接口再根据目标接口来创建一个消息生产者接口
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
//调用会话生成一个文本消息
// Message message = session.createTextMessage(msg);
//调用会话生成一个对象消息
QueueModel model = new QueueModel();
model.setId("1");
model.setIdType(1);
model.setOperType(1);
model.setDesc("修改");
Message message = session.createObjectMessage(model);
//通过生产者接口Send将消息发布到ActiveMQ服务器
producer.send(message);
//关闭会话
session.close();
//关闭连接
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// sendMessage("tcp://localhost:61616", ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "发送消息:Hello ActiveMQ Text Message!", "test_queue");
sendMessage("tcp://localhost:61616", "system", "manager", "发送消息:Hello ActiveMQ Text Message!", "test_queue");
}
}
消息消费者HelloQueueConsumer.java
package activemq.test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class HelloQueueConsumer implements MessageListener {
private String activemq_url;
private String activemq_user;
private String activemq_pw;
private String queue_name;
@Override
public void onMessage(Message message) {
//如果消息是TextMessage
// if (message instanceof TextMessage) {
// //强制转换一下
// TextMessage txtMsg = (TextMessage) message;
// try {
// //输出接收到的消息
// System.out.println("HaHa: I'v got " + txtMsg.getText());
// System.out.println("接收到消息后续处理......");
// } catch (JMSException e) {
// e.printStackTrace();
// }
// }
if (message instanceof ObjectMessage) {
//强制转换一下
ObjectMessage txtMsg = (ObjectMessage) message;
//输出接收到的消息
QueueModel model = null;
try {
model = (QueueModel) txtMsg.getObject();
System.out.println("HaHa: I'v got " + model.getId()+" , "+model.getDesc());
System.out.println("接收到消息后续处理......");
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public void receiver() {
try {
// 通过username,password,url创建连接工厂接口
ConnectionFactory factory = new ActiveMQConnectionFactory(this.getActivemq_user(), this.getActivemq_pw(), this.getActivemq_url());
// 通过连接工厂创建一个新的连接接口
Connection connection = factory.createConnection();
//打开连接
connection.start();
// 通过连接接口创建一个会话接口
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
// 会话接口创建有关主题的目标接口
Destination destination = session.createQueue(this.getQueue_name());
// 会话接口再根据目标接口来创建一个消息消费者接口
MessageConsumer consumer = session.createConsumer(destination);
//配置监听
consumer.setMessageListener(this);
} catch (Exception e) {
e.printStackTrace();
}
}
public String getActivemq_url() {
return activemq_url;
}
public void setActivemq_url(String activemq_url) {
this.activemq_url = activemq_url;
}
public String getActivemq_user() {
return activemq_user;
}
public void setActivemq_user(String activemq_user) {
this.activemq_user = activemq_user;
}
public String getActivemq_pw() {
return activemq_pw;
}
public void setActivemq_pw(String activemq_pw) {
this.activemq_pw = activemq_pw;
}
public String getQueue_name() {
return queue_name;
}
public void setQueue_name(String queue_name) {
this.queue_name = queue_name;
}
public static void main(String[] args) {
HelloQueueConsumer consumer = new HelloQueueConsumer();
consumer.setActivemq_url("tcp://localhost:61616");
consumer.setActivemq_user("system");
consumer.setActivemq_pw("manager");
consumer.setQueue_name("test_queue");
consumer.receiver();
}
}
activemq消息生产者与消息消费者简单例子的更多相关文章
- SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介、创建消息生产者、创建消息消费者、自定义消息通道、分组与持久化、设置 RoutingKey)
1.概念:SpringCloudStream 2.具体内容 2.1.SpringCloudStream 简介 SpringCloudStream 就是使用了基于消息系统的微服务处理架构.对于消息系统而 ...
- ActiveMQ发消息和收消息
来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- RabbitMQ消息队列之二:消费者和生产者
在使用RabbitMQ之前,需要了解RabbitMQ的工作原理. RabbitMQ的工作原理 RabbitMQ是消息代理.从本质上说,它接受来自生产者的信息,并将它们传递给消费者.在两者之间,它可以根 ...
- 基于Confluent.Kafka实现的KafkaConsumer消费者类和KafkaProducer消息生产者类型
一.引言 研究Kafka有一段时间了,略有心得,基于此自己就写了一个Kafka的消费者的类和Kafka消息生产者的类,进行了单元测试和生产环境的测试,还是挺可靠的. 二.源码 话不多说,直接上代码,代 ...
- kafka生产者与消费者的生产消息与消费消息所遇到的问题
当我们用API写kafka的时候 生产者生产消息,但是消费者接收不到消息?集群上启动消费者显示生产的消息.我们需要修改一下配置 (1)我们打开在虚拟机中修改kafka集群的配置文件 [root@spa ...
- 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found
使用ActiveMQ过程中,定义消息生产者: package com.sxd.jms.producer; import org.springframework.beans.factory.annota ...
- activemq读取剩余消息队列中消息的数量
先上原文链接: http://blog.csdn.net/bodybo/article/details/5647968 ActiveMQ在C#中的应用 ActiveMQ是个好东东,不必多说.Acti ...
- ActiveMQ(3)---ActiveMQ原理分析之消息持久化
持久化消息和非持久化消息的存储原理 正常情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的.能够存储的最大消息数据在${ActiveMQ_HOME}/conf/activemq.xml文 ...
随机推荐
- bluez蓝牙测试工具
http://blog.csdn.net/talkxin/article/details/50610984
- cmake重新编译
删除文件夹下的文件 rm CMakeCache.txt 重新编译即可 安装g++ yum install gcc-c++
- 测试用例excel模板
Index Precondition Action Test Data Expect Result Excute Date Pass/Fail
- oss browser
版本问题 https://github.com/aliyun/oss-browser/blob/master/all-releases.md?spm=5176.doc61872.2.7.Ic2az6& ...
- Devexpress VCL Build v2014 vol 14.2.6 发布
终于支持XE8 了.需要这么长时间吗? New Major Features in 14.2 What's New in VCL Products 14.2 Feature Highlights To ...
- 2018.09.23 bzoj3143: [Hnoi2013]游走(dp+高斯消元)
传送门 显然只需要求出所有边被经过的期望次数,然后贪心把边权小的边定城大的编号. 所以如何求出所有边被经过的期望次数? 显然这只跟边连接的两个点有关. 于是我们只需要求出两个点被经过的期望次数. 对于 ...
- trcd_extract_EDCD_new
# -*- coding:utf-8 -*- import re ''' 适应新版本 ''' year='17A'#用户自定义 ss='./data/'#根目录 filename = ss+'EDCD ...
- FuelPHP 简体中文手册
FuelPHP中文手册 FuelPHP是一个简单的.灵活的.社区驱动的PHP 5.3 web框架,它基于其他框架的最佳思想,是一个全新的开始. 他的诞生源自于很多开发社区对于现有开发框架的不满,Fue ...
- hibernate的一级缓存问题
1.证明一级缓存的问题 输出结果: 只发出一条查询语句 第二条查询语句没有执行 因为第一条查询语句缓存的存在 2. 移除缓存: 输出结果: 3.一级缓存的快照 就是对一级缓存的数据备份 保证数据库的 ...
- (KMP 字符串处理)Substrings -- hdu -- 1238
http://acm.hdu.edu.cn/showproblem.php?pid=1238 Substrings Time Limit:1000MS Memory Limit:32768KB ...