当前位置:首页 > CN2资讯 > 正文内容

windows server 2016 消息队列安装 server2012消息队列

11小时前CN2资讯


环境准备

1.安装jdk1.7+

2.下载新版ActiveMQ

   http://activemq.apache.org/

3.启动activemq服务

4.启动成功后的界面是

 5.启动成功后

浏览器访问http://localhost:8161/admin,默认用户名和密码admin/admin,管理员界面如下:

 

6.如果你想修改用户名和密码的话

在conf/jetty-realm.properties中修改即可,重启服务才能生效。

7.如果需要修改端口可以在jetty文件中修改,重启服务才能生效。

发送消息的基本步骤

(1)、创建连接使用的工厂类JMS ConnectionFactory

(2)、使用管理对象JMS ConnectionFactory建立连接Connection,并启动

(3)、使用连接Connection 建立会话Session

(4)、使用会话Session和管理对象Destination创建消息生产者MessageSender

(5)、使用消息生产者MessageSender发送消息 

消息接收者从JMS接受消息的步骤

(1)、创建连接使用的工厂类JMS ConnectionFactory

(2)、使用管理对象JMS ConnectionFactory建立连接Connection,并启动

(3)、使用连接Connection 建立会话Session

(4)、使用会话Session和管理对象Destination创建消息接收者MessageReceiver

(5)、使用消息接收者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口绑定到MessageReceiver消息接收者必须实现了MessageListener接口,需要定义onMessage事件方法。

C#实战代码

1.ActiveMQ官方网站下载最新版的C#驱动

   Apache.NMS:http://activemq.apache.org/nms/nms-api-downloads.html

   Apache.NMS.ActiveMQ:http://activemq.apache.org/nms/activemq-downloads.html

2.引用以下两个dll



Apache.NMS.ActiveMQ.dll Apache.NMS.dll



   config中添加配置



<add key="ActiveMQUrl" value="tcp://127.0.0.1:61616" />



在ActiveMQ的conf目录的activemq.xml中的节点<broker></broker>里面添加账号密码,重启服务才能生效



<!-- 添加访问ActiveMQ的账号密码 --> <plugins> <simpleAuthenticationPlugin> <users> <authenticationUser username="admin" password="manager" groups="users,admins"/> </users> </simpleAuthenticationPlugin> </plugins>



生产者代码



public void ActiveMQProducer() { string ActiveMQUrl = System.Configuration.ConfigurationManager.AppSettings["ActiveMQUrl"]; IConnectionFactory factory = new ConnectionFactory(ActiveMQUrl); //通过工厂建立连接 using (IConnection connection = factory.CreateConnection("admin", "manager")) { //通过连接创建Session会话 using (ISession session = connection.CreateSession()) { //通过会话创建生产者,方法里面new出来的是MQ中的Queue ActiveMQQueue quene = new ActiveMQQueue("audioQueue");//点到点模式 队列模式 //ActiveMQTopic quene = new ActiveMQTopic("testTopic");//广播形式 发布订阅模式 发送的消息如果没有消费者接收就会没了 IMessageProducer prod = session.CreateProducer(quene); //创建一个发送的消息对象 ITextMessage message = prod.CreateTextMessage(); //给这个对象赋实际的消息 //任务实体模型 ActiveMQInfo activeMQInfo = new ActiveMQInfo(); activeMQInfo.TaskID = Guid.NewGuid().ToString(); activeMQInfo.TaskName = "订单处理"; activeMQInfo.FileName = Guid.NewGuid().ToString(); activeMQInfo.TaskDateTime = DateTime.Now; message.Text = JsonConvert.SerializeObject(activeMQInfo); //设置消息对象的属性,这个很重要哦,是Queue的过滤条件,也是P2P消息的唯一指定属性 message.Properties.SetString("filter", "getduration"); //生产者把消息发送出去,几个枚举参数MsgDeliveryMode是否长链,MsgPriority消息优先级别,发送最小单位,当然还有其他重载 prod.Send(message, MsgDeliveryMode.NonPersistent, MsgPriority.Normal, TimeSpan.MinValue); } } }



消费者代码



public void ActiveMQConsumer() { try { string ActiveMQUrl = System.Configuration.ConfigurationManager.AppSettings["ActiveMQUrl"]; //创建连接工厂 IConnectionFactory factory = new ConnectionFactory(ActiveMQUrl); //通过工厂构建连接 IConnection connection = factory.CreateConnection("admin", "manager"); //这个是连接的客户端名称标识 connection.ClientId = "GuardQueueListener"; //启动连接,监听的话要主动启动连接 connection.Start(); //logger.Error("消息队列启动"); //通过连接创建一个会话 ISession session = connection.CreateSession(); //通过会话创建一个消费者,这里就是Queue这种会话类型的监听参数设置 ActiveMQQueue quene = new ActiveMQQueue("audioQueue");//队列模式 //ActiveMQTopic quene = new ActiveMQTopic("testTopic");//发布订阅模式 发送的消息如果没有消费者接收就会没了 IMessageConsumer consumerAudio = session.CreateConsumer(quene,"filter='getduration'"); //注册监听事件 consumerAudio.Listener += new MessageListener(consumerMediaAudio_Listener); } catch (Exception ex) { //记录异常信息 } } private void consumerMediaAudio_Listener(IMessage message) { ITextMessage iTextMessage = (ITextMessage)message; string msg = iTextMessage.Text; //逻辑处理代码 //ActiveMQInfo activeMQInfo = JsonConvert.DeserializeObject<ActiveMQInfo>(msg); }



ActiveMQInfo实体类



public class ActiveMQInfo { public string TaskID { get; set; } public string TaskName { get; set; } public string FileName { get; set; } public DateTime TaskDateTime { get; set; } }



两种模式

 

ActiveMQ持久化消息

 

1.持久化为文件

    涉及到的配置activemq.xml



<persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter>



    C#代码



prod.Send(message, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);



2.持久化为MySql

     你首先需要把MySql的驱动放到ActiveMQ的Lib目录下,总共用到3个jar包:

       mysql-connector-java-5.1.6.jar:https://dev.mysql.com/downloads/connector/j/

       commons-dbcp-1.4.jar:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi

       commons-pool-1.6.jar:http://commons.apache.org/proper/commons-pool/download_pool.cgi

     接下来修改配置文件activemq.xml里面的broker节点里面的persistenceAdapter节点,为了防止每次重启服务都去创建新表,只在第一次配置的时

      createTablesOnStartup="true",数据库创建表后我们将createTablesOnStartup="false"。



<persistenceAdapter> <jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="false"/> </persistenceAdapter>



     在配置文件中的broker节点外增加



<bean id="mysql-ds" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/activemq?relaxAutoCommit=true"/> <property name="username" value="root"/> <property name="password" value="root"/> <property name="maxActive" value="200"/> <property name="poolPreparedStatements" value="true"/> </bean>



从配置中可以看出数据库的名称是activemq,你需要手动在MySql中增加这个库。然后重新启动消息队列,你会发现多了3张表:

3.其他持久化以后再写吧


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/29779.html

    分享给朋友:

    “windows server 2016 消息队列安装 server2012消息队列” 的相关文章

    如何在VPS上轻松安装Chrome浏览器:详细步骤与优化技巧

    1.1 下载Chrome安装包 在VPS上安装Chrome浏览器的第一步是获取安装包。通常,我会选择从网盘下载地址获取Chrome安装包。打开下载链接后,输入提取码即可开始下载。这种方式不仅方便,还能确保安装包的来源可靠。下载完成后,我会将安装包保存到一个易于找到的目录,以便后续操作。 1.2 解压...

    宝塔安装扩展不生效的解决方案与技巧

    在服务器管理的世界中,宝塔面板无疑是一款强大而受欢迎的工具。它让用户以更简单的方式进行服务器管理。通过宝塔,用户可以轻松管理网站、数据库和各种扩展。而PHPExcel等PHP扩展的安装显得尤为重要,因为它们提供了许多强大的功能,助力网站正常运行。 PHP扩展的重要性不言而喻。没有合适的扩展,网站可能...

    RackNerd VPS服务测评:性价比高、稳定性强的主机商推荐

    在当今的网络世界中,选择合适的主机商显得尤为重要。我最近体验了RackNerd这家提供VPS服务的主机商,想和大家分享一些我的观点。RackNerd因其性价比高而广受好评,这让我在决定购买前进行了详细的测评。我会从多个角度来探讨RackNerd的各方面表现。 RackNerd不仅在价格上拥有明显优势...

    UCloud年付100元的云服务选择与优势解析

    在开始探讨UCloud的计费方式之前,我想先分享一下我对云服务费用的一些理解和看法。在如今的数字化时代,选择合适的云服务提供商至关重要,计费方式也应兼顾灵活性和经济性。我在UCloud上体验过不同的计费方式,从中得出了一些实用的建议。 UCloud提供的计费方式相当多样,特别是在按年计费这一块。对于...

    搬瓦工Plan v2:高性价比VPS套餐详解与用户指南

    搬瓦工Plan v2作为一个限量版VPS套餐,给很多用户带来了新的选择。与之前的The Plan套餐相比,Plan v2在配置与流量方面都实现了显著的提升。这款套餐不仅是一种实用的解决方案,也为不同需求的用户提供了灵活的选择。接下来,我将分享一些关于这个套餐的背景信息、主要升级点以及它适合哪些用户。...

    探索4837线路:高速度、稳定性与价格优势的网络选择

    在当今网络时代,选择合适的线路对于提高上网体验至关重要。4837线路就是其中一个备受关注的选项。它主要指在回国或出国前,通过一个名为4837的节点进行连接,进行跨国网络传输。这个线路归类为联通线路,其特点在于相对负载较低,使得整体表现更胜一筹。经过近年来的广泛应用,4837线路逐渐成为热门选择。 我...