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文 ...
随机推荐
- BZOJ3170: [Tjoi2013]松鼠聚会 - 暴力
描述 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 题解 简直 ...
- BZOJ1221 [HNOI2001]软件开发 - 费用流
题解 非常显然的费用流. 但是建图还是需要思考的QuQ 将每天分成两个节点 $x_{i,1}, x_{i,2} $, $ x_{i,1}$用于提供服务, $x_{i ,2}$ 用来从源点获得$nd[i ...
- Windows系统文件mshtml.dll
今天,在vista 32bit,sp 2,IE7的机器上跑开发的软件产品,打开IE,被测系统总是崩溃,换了一台机器,同样的配置环境,却没有重现. 同事的分析很详细,学习了 I tried this c ...
- 获得iframe 高度 ,各种浏览器
function fuFunctiondan(){ var frm=$("#z_div"); var iframeHeight=0; if (navigator.userAgent ...
- 2018.06.29 NOIP模拟 排列(线段树)
排列(premu.cpp) [题目描述] 对于一个 1 到 n 的排列,逆序数的定义为:排列中第 i 位 ai的逆序数就是 a1-ai-1中比 ai大的数的个数.另外用 pi表示 a1,-,ai的逆序 ...
- 第二章:冠词(Les articles)
★定冠词(Les articles définis ): 阳性单数:le(l') 阴性单数:la(l') 阴阳性复数:les ()表示前面已经提到的人或事物: ()有关的名词已被其它的成分(补语,关系 ...
- AirplaceLogger源代码解析
将源代码添加进Eclipse中,右键-->Import-->Existing Projects into Workspace-->选择AirplaceLogger源代码文件夹即可导入 ...
- python正则表达式转义注意事项
无论哪种语言,在使用正则表达式的时候都避免不了一个问题,就是在匹配元字符的时候,需要对元字符进行转义,让 正则表达式引擎将其当做普通字符来匹配.本文主要以python为例,说明一下转义中需要注意的问题 ...
- (线段树) I Hate It --hdu--1754 (入门)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1754 这次的代码和上个代码很相似,只不过上次的节点里存的是sum值,这次节点里存放的是Max, 正在慢慢 ...
- hdu 5066 小球碰撞(物理题)
http://acm.hdu.edu.cn/showproblem.php?pid=5066 中学物理题 #include <cstdio> #include <cstdlib> ...