最近有时间了,研究一下消息队列ActvieMQ,结合自己的实践和网上的一些大家内容,整理如下,所有步骤和链接均是正确的。

1、ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

1、1、特性

  1. 多种语言和协议编写客户端。语言: Java、C、C++、C#、Ruby、Perl、Python、PHP。应用协议:OpenWire、Stomp REST、WS Notification、XMPP、AMQP
  2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
  3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
  4. 通过了常见J2EE服务器(如 Geronimo、JBoss 4、GlassFish、WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
  5. 支持多种传送协议:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA
  6. 支持通过JDBC和journal提供高速的消息持久化
  7. 从设计上保证了高性能的集群,客户端-服务器,点对点
  8. 支持Ajax
  9. 支持与Axis的整合
  10. 可以很容易得调用内嵌JMS provider,进行测试

1、2、环境准备

我以windows10【家庭中文版】为列子

  1. windows 10
  2. jdk1.8+ 并在windows下配置好环境变量等,具体可以看 http://jingyan.baidu.com/article/ff41162596a77912e4823716.html
  3. 下载最新版activemq  http://activemq.apache.org/download.html

2、安装

解压下载好的安装包,至本地任何磁盘

启动activemq服务

启动成功后的界面是

这个界面是不能关闭的,因为他代表ActvieMQ是运行的,如果关闭该窗口,后面编写代码的时候就会出错。切记!!!

如果出现major.minor version51.0 之类的错误,都是java版本安装错误的问题,安装1.6+以上的版本就能解决

启动成功后,http://localhost:8161/admin,默认用户名和密码admin/admin。如果你想修改用户名和密码的话,在conf/jetty-realm.properties中修改即可。

如果需要修改端口可以在jetty文件中修改

管理员界面如下

ActiviteMQ接收和发送消息基本流程

3、发送消息的基本步骤:

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

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

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

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

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

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

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

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

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

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

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

5、C#消息队列写入

ActiveMQ官方网站下载最新版的Apache.NMS,网址:http://activemq.apache.org/nms/download.html,需要下载Apache.NMS和Apache.NMS.ActiveMQ两个bin包

http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.2-bin.zip


         

创建C#项目,将这两个DLL添加到项目中。

写入地址如下,说明:如果是安装在本地,这里的地址可以写【localhost】和【127.0.0.1】,如果是安装在服务器就直接写IP地址,切记,刚开始我就搞错了。并且这里的地址要和C#代码里面的地址保持一致,否则也会错误。

写入账号,密码如下

写代码之前,有两点要说明

第一:activemq配置文件里面的地址和代码中的地址要保持一致。


     

否则就会发生异常,如下图:

第一个就是:credentials里面的账号设置要和程序里面的一致,否则也会发生异常
    
     

否则异常如下图:
    

好了,开始写代码了。  写入代码如下:

namespace ConsoleApplication21
{
class Program
{
static void Main(string[] args)
{
String QueuesNameESF = "queue://test.log";
Uri _uri = new Uri(String.Concat("activemq:tcp://127.0.0.1:61616"));
IConnectionFactory factory = new ConnectionFactory(_uri);
using (IConnection conn = factory.CreateConnection("liulei", "123456"))
{
using (ISession session = conn.CreateSession())
{
IDestination destination = SessionUtil.GetDestination(session, QueuesNameESF);
using (IMessageProducer producer = session.CreateProducer(destination))
{
conn.Start();
//可以写入字符串,也可以是一个xml字符串等
ITextMessage request = session.CreateTextMessage("messsage");
producer.Send(request); }
}
}
}
}

写入后,可以查看

读取代码如下:

using System;
using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.Util; namespace ConsoleApplication21
{
class Program
{
static void Main(string[] args)
{
String QueuesNameESF = "queue://test.log";
Uri _uri = new Uri(String.Concat("activemq:tcp://127.0.0.1:61616?wireFormat.maxInactivityDuration=0"));
IConnectionFactory factory = new ConnectionFactory(_uri);
using (IConnection conn = factory.CreateConnection("liulei", "123456"))
{
using (ISession session = conn.CreateSession())
{
conn.Start();
IDestination destination = SessionUtil.GetDestination(session, QueuesNameESF);
using (IMessageConsumer consumer = session.CreateConsumer(destination))
{
ITextMessage message = consumer.Receive() as ITextMessage;
Console.Write(message.Text);
}
}
}
Console.ReadLine();
}
}
}

结合很多大家的内容,所有步骤都经过验证,可以使用。

一、消息队列之ActiveMQ的安装、配置和C#样例代码的更多相关文章

  1. 消息队列集群kafka安装配置

    1. 下载wget http://mirror.rise.ph/apache/kafka/0.11.0.0/kafka_2.12-0.11.0.0.tgz2. 安装tar xf kafka_2.12- ...

  2. 柯南君:看大数据时代下的IT架构(3)消息队列之RabbitMQ-安装、配置与监控

    柯南君:看大数据时代下的IT架构(3)消息队列之RabbitMQ-安装.配置与监控 一.安装 1.安装Erlang 1)系统编译环境(这里采用linux/unix 环境) ① 安装环境 虚拟机:VMw ...

  3. 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析

    1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...

  4. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  5. YOLOv4 资源环境配置和测试样例效果

    YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...

  6. Windows Server环境下消息队列之ActiveMQ实战

    环境准备 1.安装jdk1.7+ 2.下载新版ActiveMQ http://activemq.apache.org/ 3.启动activemq服务 4.启动成功后的界面是  5.启动成功后 浏览器访 ...

  7. 消息队列之 ActiveMQ(山东数漫江湖)

    简介 ActiveMQ 特点 ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高效.可扩展.稳定.安全的企业级消息通信. 它的设计目标是提供标准的.面向消息的.多语言 ...

  8. 消息队列之 ActiveMQ

    简介 ActiveMQ 特点 ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高效.可扩展.稳定.安全的企业级消息通信. 它的设计目标是提供标准的.面向消息的.多语言 ...

  9. 消息队列之activeMQ

    1.activeMQ的主要功能 实现高可用.高伸缩.高性能.易用和安全的企业级面向消息服务的系统 异步消息的消费和处理 控制消息的消费顺序 可以和Spring/springBoot整合简化编码 配置集 ...

随机推荐

  1. spark-submit 提交Application

    在spark1.0中推出spark-submit来统一提交applicaiton ./bin/spark-submit \ --class <main-class> --master &l ...

  2. 经典算法 KMP算法详解

    内容: 1.问题引入 2.暴力求解方法 3.优化方法 4.KMP算法 1.问题引入 原始问题: 对于一个字符串 str (长度为N)和另一个字符串 match (长度为M),如果 match 是 st ...

  3. Servlet、Servlet容器等内容讲解

    转载自http://blog.csdn.net/iAm333 对于Servlet.Servlet容器以及一个Servlet容器-Tomcat这些概念讲解的挺清晰的,转载下 之前在开源中国看到一篇文章& ...

  4. 写了个TP5下PHP和手机端通信的API接口校验

    写了个PHP和手机端通信的API接口校验 直接发函数吧 public function _initialize() { //定义密码和盐 $password="123456"; $ ...

  5. bootstrap3中模态框的数据编辑使用方法

    模态框是bootstrap3中比较好用得弹窗控件,这回使用了 说主要的,官方详细教程 http://www.runoob.com/bootstrap/bootstrap-modal-plugin.ht ...

  6. 2.Triangle (三角形)

    1.等腰直角三角形: https://www.cnblogs.com/FlyingLiao/p/9869040.html 2.1任意三角形: <!DOCTYPE html> <htm ...

  7. hadoop命令帮助

    安装完hadoop后,在hadoop的bin目录下有一系列命令: container-executor hadoop hadoop.cmd hdfs hdfs.cmd mapred mapred.cm ...

  8. eclipse 的project explorer问题,这个怎样把localFileSystem去掉

    转自:https://zhidao.baidu.com/question/550279043.html

  9. VBA 使用QueryTables 中文乱码的处理

    一般情况: cnn = "OLEDB;Provider=IBMDA400;Data Source=TFB4001;User ID=;Password=;" Sql = " ...

  10. HTTPS 路径配置

    1: 首先安装 fiddlercertmaker.exe 文件   2:Tools  -> HTTPS    3: Connections 勾中Allow remote computer to ...