搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Monodyee
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
用m语言检查Arxml文件的连线问题
2
二叉树的多种建立方式
3
python面向对象程序设计(我写的第一篇博客吖)
4
proc参数介绍_proc.num参数
5
Git学习笔记(黑马)_黑马git最新笔记
6
2024最新CrossOve软件试用版本下载
7
个人算法与数据结构心得_算法与数据结构心得体会
8
HADOOP启动集群报错JAVA_HOME is not set and could not be found.
9
执行update语句,用没用到索引,区别大吗?_update语句会走索引吗
10
可穿戴设备想怎么做广告?在你手上,甚至扫描你的大脑
当前位置:
article
> 正文
Apache apusic---ActiveMQ中间件在JMS1.1、J2EE中的使用_apusicmq demo实例
作者:Monodyee | 2024-05-02 06:56:58
赞
踩
apusicmq demo实例
ActiveMQ中间件在JMS1.1、J2EE中的使用
Apache的中间件---ActiveMQ对于企业级的应用很广泛。支持JMS1.1、J2EE1.4以上版本,可运行于JVM和大部分web容器中、支持多种语言客户端(Java、C、C++,ActionScript、Ajax等)、支持多种协议(stomp、openWire等)、对spring的支持也很良好、速度很快是JbossMQ的十倍、与openJMS、JbossMQ等开源框架相比,ActiveMQ有Apache的支持可以持续发展。
启动ActiveMQ的后台管理为:http://localhost:8161/admin/(登陆时候默认的user and password is admin/admin)
Queue(Point-to-Point)与Topic(publisher/Subscriber)的比较
1:jms queue执行load balancer语义
一条消息仅仅能够被一个consumer收到。如果在message发送的时候没有可用的consumer,那么它将会被保存到处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转移到另外一个consumer那儿。一个Queue可以有很多的consumer,并且在多个可用的consumer中负载均衡。
2:Topic实现publish和subscribe语义
一条消息被publish时,它将发送到所用感兴趣的订阅者,所以零到多个subscribe将被接受到消息的一个拷贝,但是在消息代理接收到消息的时,只有激活订阅的subscribe能够获得消息的一个拷贝。
下面为程序的实现例子:对java的支持
producer(sender)消息生产对象
package com.clark.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
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 Sender {
private static final int SEND_NUMBER = 5;
public static void main(String[] args) {
// ConnectionFactory :连接工厂,JMS 用它创建连接
ConnectionFactory connectionFactory = null;
// Connection :JMS 客户端到JMS Provider 的连接
Connection connection = null;
//Session:one sender or receiver message singleton thread and provide a transaction context
Session session = null;
/**
* Destination:message destination,sender who
* it include two message domain:Point-to-Point(Destinational call queue)
*
and Publisher/Sucscribler Model(Destinational call topic)
* Point-To-Point character:one message can only one consumer
*
between message produer and consumer have no relationship.No matter consumer whether is running
*
status when producer send message,It can receiver message
* Publisher/Subscribler:one message has many consumer
*
producer and consumer have relationship.Subscribler one topic consumer can only
*
consumer publisher send message
*/
Destination destination = null;
//MessageProducer
MessageProducer producer;
//TextMessage message
//constructor ConntectionFactory Instance
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
connection = connectionFactory.createConnection();
//start
connection.start();
/**
* Session.AUTO_ACKNOWLEDGE:when consumer receive message succes or MessageListener.onMessage return success
* Session.CLIENT_ACKNOWLEDGE:it is session acknowledge,as long as make sure one, all is be ok
* Session.DUPS_ACKNOWLEDGE:session delay message commit
*/
session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
destination = session.createQueue("FirstQueue");
//get message producer(sender)
producer = session.createProducer(destination);
/**
* JMS provide message commit model:PERSISTENT and NON_PERSISTENT
*/
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//constructor message
sendMessage(session,producer);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
private static void sendMessage(Session session, MessageProducer producer) throws JMSException {
for (int i = 0; i < SEND_NUMBER; i++) {
/**
* JMS message type:TextMessage、MapMessage、BytesMessage、StreamMessage and ObjectMessage
*/
TextMessage message = session.createTextMessage("ActiveMQ send message:"+i);
// 发送消息到目的地方
System.out.println("send message:" + "ActiveMq send message" + i);
producer.send(message);
}
}
}
receive(consumer)消费者对象
package com.clark.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Receiver {
public static void main(String[] args) {
// ConnectionFactory :连接工厂,JMS 用它创建连接
ConnectionFactory connectionFactory;
// Connection :JMS 客户端到JMS Provider 的连接
Connection connection = null;
// Session: 一个发送或接收消息的线程
Session session;
// Destination :消息的目的地;消息发送给谁.
Destination destination;
// 消费者,消息接收者
MessageConsumer consumer;
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");//URL must be this value ,else will throw exception
try {
// 构造从工厂得到连接对象
connection = connectionFactory.createConnection();
// 启动
connection.start();
// 获取操作连接
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
destination = session.createQueue("FirstQueue");//this queue name can own create--->will generator in ActiveMQ Admin console
consumer = session.createConsumer(destination);
while (true) {
//设置接收者接收消息的时间,为了便于测试,这里定为100s
/**
* consumer method has two type:synchronization and asynchronization
* syschronization:we will use consumer.receive() display receive message,it can block util message come here
* asynchronization:consumer can register a message listener,use define take action when message come here
*/
TextMessage message = (TextMessage) consumer.receive(100000);
if (null != message) {
System.out.println("收到消息" + message.getText());
} else {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != connection)
connection.close();
} catch (Throwable ignore) {
}
}
}
}
===========测试方法=================================
先运行Receiver.java class类,console不会输出任何的信息
当运行Sender.java类的时候,在Sender类中的console会输出
send message:ActiveMq send message0
send message:ActiveMq send message1
send message:ActiveMq send message2
send message:ActiveMq send message3
send message:ActiveMq send message4
此时我们在Receiver类中的console会输出
收到消息ActiveMQ send message:0
收到消息ActiveMQ send message:1
收到消息ActiveMQ send message:2
收到消息ActiveMQ send message:3
收到消息ActiveMQ send message:4
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Monodyee/article/detail/522744
推荐阅读
article
【高危】
Apache
Spark
UI
shell
命令注入
漏洞
(
POC
)_
cve
-2023-320...
墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,核心团队来自百度、华为、乌云等企业,公司为客户提供完整的软件供...
赞
踩
article
【高危】
Apache
Solr
环境变量
信息泄漏
漏洞
...
Apache
Solr
是一款开源的搜索引擎。在
Apache
Solr
受影响版本中,由于
Solr
Metrics ...
赞
踩
article
cocos2d
x
lua
3.14 适配 安卓 刘海
屏
全面
屏
异形
屏
_
cocos2d
lua
屏
幕适...
1,cnonfig.
lua
目的是为了以高为极限。autoscale = "EXACT
_
FIT", 修改成 FIXED
_
...
赞
踩
article
Apache
Doris
核⼼功能 |
数据模型
和
物化
视图
...
点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注,大数据开发领域最强公众号!大数据...
赞
踩
article
如何
基于
Apache
Doris
与
Apache
Flink
快速构建极速易用的
实时
数仓
_
基于
...
随着大数据应用的不断深入,企业不再满足离线数据加工计算的时效,
实时
数据需求已成为数据应用新常态。伴随着
实时
分析需求的不断...
赞
踩
article
数据库报错:无法识别
服务器时
区值或表示多个
时区
。如果要利用
时区
支持,则必须配置服务器或
JDBC
驱动程...
### Cause: java.sql.SQLException: The server time zone value...
赞
踩
article
10分钟了解
数据
质量
管理-
奥斯汀
格里芬
Apache
Griffin
...
Griffin
是一个开源的大
数据
数据
质量
解决方案,由eBay开源,它支持批处理和流模式两种
数据
质量
检测方式,是一个基于H...
赞
踩
article
Apache
Flink
中
作业
图
与
执行
图
的深入解析...
从用户编写的应用程序代码到最后物理
执行
的过程中,
Flink
通过逐层构建和优化
执行
图
,有效地将复杂的流处理逻辑转换为可在...
赞
踩
article
apache
-
hive
-
3.1
.
2
安装和部署_
apache
-
hive
-
3.1
.
2
-
bin
.
tar
.g...
hive
的安装:1、下载
apache
-
hive
-
3.1
.
2
-
bin
.
tar
.gz
hive
安装包路径
2
、解压并配置环...
赞
踩
article
hdfs
datanode
无法开启_
warning
:
attempting
to
start
all...
运行
start
-all.sh出现如下提示:WARNING: Attempting to
start
all Apache...
赞
踩
article
Windows
上使用
Apache
部署
Django
_
django
部署到
windows
服务器 apa...
Apache
+Python3.6.3+
Django
+Mod_WSGI实现,此方法已测试的系统环境:
Windows
7,Wi...
赞
踩
article
开源 | 慧哥
充
电
桩
平台
V2.5.2(
支持
汽车 电动
自行车
云快
充
1.5、
云快
充
1.6
微服务 )...
开源 | 慧哥汽车
充
电
桩
平台
V2.5.2(
支持
汽车 电动
自行车
云快
充
1.5、
云快
充
1.6
微服务 ))
支持
前端un...
赞
踩
article
(二)
Flink
从入门到项目实战——
Flink
入门程序_
org
.
apache
.
flink
.api.j...
Flink
环境准备开发工具及环境要求IDE最好使用IntelliJ IDEA (eclipse存在插件不兼容的风险)唯一...
赞
踩
article
七牛云
go
demo
...
package mainimport ( "bytes" "crypto/hmac" "crypto/sha1" "en...
赞
踩
article
[WSL] 安装
hive
3.1.2成功后, 使用
datagrip
连接失败_
datagrip
连接hi...
修改
hadoop
配置文件 etc/
hadoop
/core-site.xml,加入如下配置项。修改配置hdfs-site...
赞
踩
article
Spring
中使用内置的
tomcat
容器启动后自动退出问题解决方法_org.
apache
.catal...
exit code 0 遇到这种情况一般是因为电脑之前启动过
tomcat
且没有正确关闭导致, 一般情况下重启电脑即可解决...
赞
踩
article
Apache
Shiro
-
550
反
序列化
漏洞复现_
shiro
550
cve
...
Apache
Shiro
550
反
序列化
(CVE-2016-4437)漏洞分析、复现及修复。_
shiro
550
cve
shi...
赞
踩
article
JDBC
连接
MySQL
配置(附完整
demo
)
_
mysql
官网
jdbc
驱动
...
8
)
下载完成后,解压缩“zip”文件,您将看到
驱动
包(
mysql
-connector-j-8.0.31.jar
)
。4
)
在...
赞
踩
article
MQ
对比选型:Rocket
MQ
、
Kafka
、Rabbit
MQ
、Active
MQ
、
Zero
MQ
...
MQ
对比选型:Rocket
MQ
、
Kafka
、Rabbit
MQ
、Active
MQ
、
Zero
MQ
_mq对比mq对比 ...
赞
踩
article
qemu
Demo
makefile
分析
_
qemu
上写
makefile
...
系列文章目录[
qemu
的STM32虚拟化环境](https://blog.csdn.net/BLUCEJIE/artic...
赞
踩
相关标签
apache
spark
大数据
网络安全
cocos2dx
lua
刘海屏
数据可视化
navicat
比特币
sharepoint
xhtml
doris
数据库
数据仓库
kafka
griffin
flink
hadoop
Apache
Django
WindowsServer
Windows上使用Apache部署Django
Windows上部署Django