设为首页 收藏本站
查看: 714|回复: 0

[经验分享] Apache ActiveMQ

[复制链接]

尚未签到

发表于 2015-8-6 08:27:41 | 显示全部楼层 |阅读模式
  1.JMS:http://www.iyunv.com/phoebus0501/archive/2011/02/23/1961970.html
  2.以下代码来自ActiveMQ中的例子,只是加了一些说明,方便理解
  消息消费者:



private void consumer()
{
String user = "con_user"; //用户名
String password = "con_password"; //密码               
String host = "localhost"; //MQ服务器的IP地址
int port = Int32.Parse("61616"); //61616:openwire协议使用的端口号
String destination = "HIATMP.HISENSE.VMS.NEWVMSPUB"; //主题的名称或者队列的名称                 
String brokerUri = "activemq:tcp://" + host + ":" + port + "?transport.useLogging=true";
//JMS接口规范
//1.连接工厂:用于创建连接
NMSConnectionFactory factory = new NMSConnectionFactory(brokerUri);
//2.JMS客户端到JMS Provider的连接
IConnection connection = factory.CreateConnection(user, password);//也可以没有用户名、密码
//通过在MQ服务器上设置用户名、密码控制对MQ服务器的访问
//3.线程
ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
//4.消息的目的地:destination
IDestination dest = session.GetTopic(destination);//Topic模式
//5.创建用于接收消息的对象
IMessageConsumer consumer = session.CreateConsumer(dest);
connection.Start();//建立连接
listBox1.Items.Add("---成功连接MQ服务器---");
while(true)
{
listBox1.Items.Add("正在等待消息....");
IMessage msg = consumer.Receive();//阻塞等待
if (msg is ITextMessage)
{
ITextMessage txtMsg = msg as ITextMessage;
String body = txtMsg.Text;//取出消息的内容   
listBox1.Items.Add("    收到消息:消息内容:"+body+"--等待5秒");
Thread.Sleep(5000);//模拟处理消息所花费的时间
//Topic模式与Queue模式的区别:
//在Topic模式下,必须先启动消费者,再由生产者通过topic给消费者发送消息。若先给topic发消息,再启动消费者,消息丢失。
//在本程序中,尽管延迟了5秒取下一个消息,但消息仍在。Topic会确保所有订阅者都取到消息后,才会将消息删除。
//在本程序中,尽管Topic中有多个消息,但还是一次只取回一条消息。
                }
}
}
  消息生产者:



public static void producer(string body)//body表示要发送的字符串内容
        {
String user =  "admin";
String password = "password";
String host = "localhost"; //MQ服务器的IP地址
int port = Int32.Parse("61616"); //61616:openwire协议使用的端口号
String destination = "HIATMP.HISENSE.VMS.NEWVMSPUB"; //主题的名称或者队列的名称  
String brokerUri = "activemq:tcp://" + host + ":" + port;
//JMS接口规范
//1.连接工厂:用于创建连接
NMSConnectionFactory factory = new NMSConnectionFactory(brokerUri);
//2.JMS客户端到JMS Provider的连接
IConnection connection = factory.CreateConnection(user, password);
//3.线程:同时设置是否支持事务和acknowledge标识
ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
//4.消息的目的地:destination
IDestination dest = session.GetTopic(destination);//Topic模式
//5.创建用于发送消息的对象(设置其持久模式)
IMessageProducer producer = session.CreateProducer(dest);
producer.DeliveryMode = MsgDeliveryMode.NonPersistent;//非持久模式

connection.Start();//建立连接
producer.Send(session.CreateTextMessage(body));//body表示要发送的字符串内容
//JMS定义了5中消息正文格式,此处的TextMessage表示一个字符串对象
connection.Close();//关闭连接
}
  3.网站链接:http://activemq.apache.org/
  4.相关书籍:《activemq in action
  5.为了使用C#,需要添加:using Apache.NMS;  添加引用Apache.NMS.dll;Apache.NMS.ActiveMQ;Ionic.Zlib.dll;
  注意:以上DLL文件的版本号与.NET架构的版本号要统一。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-94568-1-1.html 上篇帖子: apache pdfbox 下篇帖子: 安装Apache Web 服务器软件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表