JMS消息服务-ActiveMQ

JMS消息服务-ActiveMQ

sf2gis@163.com

2015年7月28日

 

1  JMS消息服务

目标:网络或进程间的消息异步、同步通信、点对点或发布模式通信。将消息的收、发方解耦。

原理:Java提供JMS(Java Message Service)作为消息服务的规范,可以有不同的实现方法。发送方将消息发向JMS服务器,由JMS服务器处理消息后再发送到收取方。

参考:http://my.oschina.net/zmf/blog/368017

方法:开源消息服务软件,ActiveMQ。

2 方法:ActiveMQ服务器

2.1 打开服务器:bin\activemqstart。

注意:有可能出现VM创建错误,这是由于ActiveMQ默认需要1G内存,如果物理内存不足,则创建失败。可能通过释放内存,达到1G再启动。或者修改ActiveMQ的内存配置(推荐)。

启动成功后出现下图所示:access to all MBeans is allowed。

2.2 修改内存配置:activemq.bat。

修改第80行-Xms -Xmx为512m或更少。

参考:http://activemq.apache.org/javalangoutofmemory.html

2.3 关闭服务器:ctrl+C

2.4 打开WEB 控制台:localhost:8161,可以看到控制台和示例程序。

示例程序在webapps-demo/demo中,需要从其中copy到webapps中。

3 方法:消息收发模式:点对点,订阅

由消息服务器管理消息,收发双方独立联系服务器,消息的生命周期由消息服务器管理。

3.1 点对点:单线联系。

双方完全无关,不须维持在线状态。

3.2 订阅:广播。

临时订阅时,订阅者须维持在线状态。

持久订阅时,双方完全无关,不须维持在线状态。

3.3 消息持久化:存储消息,重启后消息依然存在。

可以指定数据库。

参考:http://bbs.paris8.org/viewthread.php?tid=4252

3.4 集群:扩展服务器

可以使用集群服务器扩展性能。

参考:http://blog.evercoding.net/2014/07/17/activemq-note/

4 方法:收发消息

目标:与消息服务器进行消息收发。

原理:收/发方通过与服务器建立连接,然后以session为单位建立单线程消息收/发。

方法:设置服务器地址和类型、编写收发逻辑。

参考:

http://baike.baidu.com/link?url=XaCsMIRVQEhZLTQB2jI1ysPQK0xUCKWaE9UQlFXVbPPKralw6XTFJHv8j6HnbcPMOjZYHFUMR5Ir_P6d2OE28kvtLTBCBLDHuvPyEC_rA0q

4.1 设置服务器:设置服务器的连接地址。

目标:配置mq服务器能够提供服务的IP地址。

方法:修改conf/activemq.xml中<transportConnectors>的连接选项,默认是tcp://0.0.0.0:61616。

具有多种类型的连接,如tcp,udp,http等。

参考:http://activemq.apache.org/configuring-transports.html

示例:添加新的tcp连接服务tcp://0.0.0.0:61618。

<transportConnectors>

            <!-- DOS protection, limitconcurrent connections to 1000 and frame size to 100MB -->

            <transportConnectorname="openwire"uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>           

            <transportConnector name="tcp"uri="tcp://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnectorname="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnectorname="stomp"uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnectorname="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnectorname="ws"uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

        </transportConnectors>

4.2 建立连接:Connection。

4.2.1配置连接工厂:连接使用ConnectionFactory配置连接服务器,并由其创建连接。使用完成之后要关闭连接服务器和连接。

4.2.2建立连接:使用连接工厂生成一个连接。并使用start()启动连接。

只有启动连接才真正的建立连接。

4.2.3示例

           //create connection

           ConnectionFactory cf=newActiveMQConnectionFactory("tcp://localhost:61618");

           Connection conn = cf.createConnection();

           conn.start();

4.3 创建会话:Session,独立的消息队列。支持回滚。

4.3.1创建会话:使用连接创建一个独立的会话。createSession(transacted,acknowledgeMode)。

会话将指定是否支持事务,如果支持(true)则忽略a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值