问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

activeMQ和MSMQ比较怎么样

发布网友 发布时间:2022-04-29 03:14

我来回答

2个回答

懂视网 时间:2022-05-06 18:32

package com.jms;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import javax.jms.BytesMessage;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;impo

package com.jms;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.clapper.util.logging.Logger;

import com.pzoom.dsa.common.util.Log;
import com.pzoom.dsa.nerd.mysql.DBQueryHelper;

public class Jms
{
 static ConnectionFactory connectionFactory;
 static Connection connection = null;
 static Session session;
 static Map sendQueues = new ConcurrentHashMap();

 static Map getQueues = new ConcurrentHashMap();

 static Log log=Log.getLogger(DBQueryHelper.class);

 static {
 connectionFactory = new ActiveMQConnectionFactory(
 ActiveMQConnection.DEFAULT_USER, 
 ActiveMQConnection.DEFAULT_PASSWORD, 
 "tcp://10.100.100.100:61616?wireFormat.maxInactivityDuration=0");
 try
 {
 connection = connectionFactory.createConnection();

 connection.start();

 session = connection.createSession(Boolean.FALSE.booleanValue(), 
 1);
 }
 catch (Exception e) {
 e.printStackTrace();
 }
 }

 static MessageProducer getMessageProducer(String name) {
 if (sendQueues.containsKey(name))
 return ((MessageProducer)sendQueues.get(name));
 try
 {
 Destination destination = session.createQueue(name);
 MessageProducer producer = session.createProducer(destination);
 sendQueues.put(name, producer);
 return producer;
 } catch (JMSException e) {
 e.printStackTrace();
 }

 return ((MessageProducer)sendQueues.get(name));
 }

 static MessageConsumer getMessageConsumer(String name) {
 if (getQueues.containsKey(name))
 return ((MessageConsumer)getQueues.get(name));
 try
 {
 Destination destination = session.createQueue(name);
 MessageConsumer consumer = session.createConsumer(destination);
 getQueues.put(name, consumer);
 return consumer;
 } catch (JMSException e) {
 e.printStackTrace();
 }

 return ((MessageConsumer)getQueues.get(name));
 }

 public static void sendMessage(String queue, String text) {
 try {
 TextMessage message = session.createTextMessage(text);
 getMessageProducer(queue).send(message);
 // log.info("sendMessage " + queue + "		" + text);
 }
 catch (JMSException e) {
 e.printStackTrace();
 }
 }
 
 
 
 public static String getMessage(String queue)
 {
 try {
 TextMessage message = (TextMessage)getMessageConsumer(queue).receive(10000L);
 if (message != null) 
 return message.getText();
 } catch (JMSException e) {
 e.printStackTrace();
 }
	return null;
 }

 public static void close() {
 try {
 session.close();
 } catch (JMSException e) {
 e.printStackTrace();
 }
 try {
 connection.close();
 } catch (JMSException e) {
 e.printStackTrace();
 }
 }
}

热心网友 时间:2022-05-06 15:40

  简介
  在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择。这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅、点对点这两种。另外,通过结合这些模式的具体应用,我们在处理某些应用场景的时候也衍生出来了一种请求应答的模式。下面,我们针对这几种方式一一讨论一下。
  基础流程
  在讨论具体方式的时候,我们先看看使用activemq需要启动服务的主要过程。
  按照JMS的规范,我们首先需要获得一个JMS connection factory.,通过这个connection factory来创建connection.在这个基础之上我们再创建session, destination, procer和consumer。因此主要的几个步骤如下:
  1. 获得JMS connection factory. 通过我们提供特定环境的连接信息来构造factory。
  2. 利用factory构造JMS connection
  3. 启动connection
  4. 通过connection创建JMS session.
  5. 指定JMS destination.
  6. 创建JMS procer或者创建JMS message并提供destination.
  7. 创建JMS consumer或注册JMS message listener.
  8. 发送和接收JMS message.
  9. 关闭所有JMS资源,包括connection, session, procer, consumer等。
  publish-subscribe
  发布订阅模式有点类似于我们日常生活中订阅报纸。每年到年尾的时候,邮局就会发一本报纸集合让我们来选择订阅哪一个。在这个表里头列了所有出版发行的报纸,那么对于我们每一个订阅者来说,我们可以选择一份或者多份报纸。比如北京日报、潇湘晨报等。那么这些个我们订阅的报纸,就相当于发布订阅模式里的topic。有很多个人订阅报纸,也有人可能和我订阅了相同的报纸。那么,在这里,相当于我们在同一个topic里注册了。对于一份报纸发行方来说,它和所有的订阅者就构成了一个1对多的关系。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"你是在哪看到我的照片?"怎么说英语 留恋地看着我的照片用英语怎么说? 高德iphone地图下载 苹果手机高德地图怎么下载地图 孕中期适合出游吗 哪些孕妇不适合长途旅行 孕妇坐长途车旅行的好处 孕妇出游的最佳时间 孕晚期适合出游吗 孕妇外出旅行禁忌 小米11烧wifi啥表现 qbus消费pulsar延迟 ...mq等其他消息队列的仁兄呀,最近学习了rabbitmq的各种用法, 电商中mq和redis应用场景是什么样的 WebService,JMS/MQ,Socket,WTC,JNI,这几个技术的应用场景能够比较一下吗 ? 孩子上一年级注意力不集中怎么办 一年级孩子专注力太差怎么办? 微信好友删除了怎么找回,不记得他和名字了? 孩子刚上一年级,专注力不够强,家长应该如何教育? 孩子上课专注力差怎么办? 孩纸一年级,学习习惯专注力不好怎么办 一年级孩子的专注力时间不是很长,该如何提升? 一年级专注力差的孩子怎么办 微信怎么发送自己的名片 一年级注意力不好怎么办 孩子刚上一年级,专注力很差,怎么办? 微信如何发送名片 吃香蕉有什么好处如题 谢谢了 吃香蕉对人体有什么好处啊!求大神帮助 吃香蕉对人有哪些好处 吃香蕉对人有什么好处和坏处呢?什么时候是吃对人的身体最好 Erlang 主要的应用场景都有哪些? win10在邮件里注册微软账户总是在注册完成之后出现错误代码 登不了邮件 第一次是显示(我们无法 win10的邮件和日历不能使用怎么办? 苏州7月哪里旅游最好 苏州7-8日旅游介绍(不要复制粘贴了...实在看的太多了...) 苏州旅游去处? 苏州旅游注意事项? 我想去苏州旅游,初步选定七里山塘,虎丘,留园和观光街,附近还有什么好玩的景点,或是一条线上的。 游玩苏州拙政园,七里山塘,金鸡湖怎么安排行程 过两天去苏州旅游,请问“七里山塘”和“山塘街”是一个地方吗? 小董餐厅的砂锅排骨干豆角好不好吃 杜甫《丽人行》诗中“长安水边多丽人”的上句 所有描写美女的诗句中你最喜欢哪一句? 《粉红女郎》为何至今仍然没有过时? 一个黑美人西瓜,只切三分一是多少,能打个比方吗 我女朋友她长得挺好看的,不过有点儿轻微龅牙。我有点接受不了,一想到就有压力。她一笑起来露出牙齿就不 烧麦皮怎么做呀? 糯米烧麦怎么做 怎样做烧卖皮 各位做期货炒单的,是用跟盘价下单,还是用指定价下单