ActiveMQ c# 系列——进阶实例(三)
前言
前面介绍了基本的消费者和生产者,那么看下他们之间有什么其他的api。
正文
消费者设置等待时间
生产者生产了5条消息

改一下消费者。
static void Main(string[] args)
{
Uri connecturl = new Uri("activemq:tcp://106.15.250.57:61616");
IConnectionFactory factory = new ConnectionFactory(connecturl);
using (IConnection connection = factory.CreateConnection())
{
using (ISession session = connection.CreateSession())
{
IDestination destination = SessionUtil.GetDestination(session, "queue://test");
using (IMessageConsumer consumer=session.CreateConsumer(destination))
{
connection.Start();
//consumer.Listener += new MessageListener(onMessage);
while (true)
{
var message = (ITextMessage)consumer.Receive(TimeSpan.FromSeconds(4));
if (message != null)
{
Console.WriteLine(message.NMSMessageId);
Console.WriteLine(message.Text);
}
}
}
}
}
}
Receive(TimeSpan.FromSeconds(4)) 表示如果4秒没有消息将不再等待。通过断点调式可以很快的展示出来。
多个消费者的情况
我们知道队列是每个生产的东西都只能消费一次,这个就不做试验了,因为这个是队列的基本原理。
那么我启动两个消费者,那么消费情况是什么样的呢?
生产者:
class Program
{
static void Main(string[] args)
{
Uri connecturl = new Uri("activemq:tcp://106.15.250.57:61616");
IConnectionFactory factory = new ConnectionFactory(connecturl);
using (IConnection connection = factory.CreateConnection())
{
using (ISession session = connection.CreateSession())
{
IDestination destination = SessionUtil.GetDestination(session, "queue://test");
using (IMessageProducer producer = session.CreateProducer(destination))
{
//producer.DeliveryMode = MsgDeliveryMode.Persistent;
//producer.RequestTimeout = TimeSpan.FromSeconds(2);
for (int i = 1; i < 7; i++)
{
ITextMessage request = session.CreateTextMessage("oh,my friend"+i);
producer.Send(request);
}
}
}
}
}
}
两个消费者:
class Program
{
protected static TimeSpan receiveTimeout = TimeSpan.FromSeconds(10);
static void Main(string[] args)
{
Uri connecturl = new Uri("activemq:tcp://106.15.250.57:61616");
IConnectionFactory factory = new ConnectionFactory(connecturl);
using (IConnection connection = factory.CreateConnection())
{
using (ISession session = connection.CreateSession())
{
IDestination destination = SessionUtil.GetDestination(session, "queue://test");
using (IMessageConsumer consumer = session.CreateConsumer(destination))
{
connection.Start();
consumer.Listener += new MessageListener(onMessage);
Console.Read();
//while (true)
//{
// var message = (ITextMessage)consumer.Receive(TimeSpan.FromSeconds(4));
// if (message != null)
// {
// Console.WriteLine(message.NMSMessageId);
// Console.WriteLine(message.Text);
// }
//}
}
}
}
}
protected static void onMessage(IMessage receivedMsg)
{
ITextMessage message = receivedMsg as ITextMessage;
if (message != null)
{
//查询出消息
Console.WriteLine(message.Text);
}
}
}
消费情况:

平均分配
ActiveMQ c# 系列——进阶实例(三)的更多相关文章
- ActiveMQ入门系列三:发布/订阅模式
在上一篇<ActiveMQ入门系列二:入门代码实例(点对点模式)>中提到了ActiveMQ中的两种模式:点对点模式(PTP)和发布/订阅模式(Pub & Sub),详细介绍了点对点 ...
- ActiveMQ入门系列二:入门代码实例(点对点模式)
在上一篇<ActiveMQ入门系列一:认识并安装ActiveMQ(Windows下)>中,大致介绍了ActiveMQ和一些概念,并下载.安装.启动他,还访问了他的控制台页面. 这篇,就用代 ...
- 《Genesis-3D开源游戏引擎-官方录制系列视频教程:进阶实例篇》
注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D进阶实例 第四课<2D编辑与脚本的统一入口> 使用G3D完成一个简单的类飞机大战游戏,介绍了G3D2d游戏制作的流程包括: ...
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...
- SQL Server调优系列进阶篇(深入剖析统计信息)
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- SQL Server调优系列进阶篇(如何索引调优)
前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本 ...
- JMS【四】--Spring和ActiveMQ整合的完整实例
第一篇博文JMS[一]--JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文JMS[二 ...
- TiKV 源码解析系列文章(三)Prometheus(上)
本文为 TiKV 源码解析系列的第三篇,继续为大家介绍 TiKV 依赖的周边库 rust-prometheus,本篇主要介绍基础知识以及最基本的几个指标的内部工作机制,下篇会介绍一些高级功能的实现原理 ...
- Java NIO系列教程(三) Channel之Socket通道
目录: <Java NIO系列教程(二) Channel> <Java NIO系列教程(三) Channel之Socket通道> 在<Java NIO系列教程(二) Ch ...
随机推荐
- JS-1基本语法
初识JavaScript JavaScript是一种运行在客户端的脚本语言 脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行 现在也可以基于Node.js技术进行服务器编程 ...
- 浅谈Zabbix与Prometheus区别
Zabbix和Prometheus都是非常流行的监控系统.它们有许多相似之处,但也有一些不同之处.以下是Zabbix和Prometheus监控对比的一些关键点: 1.数据模型和查询语言 Prometh ...
- Failed to execute goal on project WebBackend: Could not resolve dependencies for project com.lang.yi:WebBackend:jar:1.0.0
一.问题由来 自己在搭建项目的时候报一个错误,如标题所示,具体错误信息如下: Failed to execute goal on project WebBackend: Could not resol ...
- FastGithub.UI64位中文版V2.1.4绿色版 - 软件推荐
推荐理由 相对于改hosts,这个更好用 FastGithub.UI64位中文版V2.1.4绿色版 https://www.cr173.com/soft/670733.html
- vetur 和 volar 不要一起装 - vscode插件 已解决
vetur 和 volar 不要一起装 - vscode插件 会有各种稀奇古怪的问题. 解决方案 利用 vscode 工作区 新建工作区 然后全局 将 volar 禁用工作区,起一个新的vue3项目, ...
- python3 Crypto模块实例解析
一 模块简介 1.简介 python的Crypto模块是安全hash函数(例如SHA256 和RIPEMD160)以及各种主流的加解密算法的((AES, DES, RSA, ElGamal等)的集合. ...
- 2层for循环生成 TreeView
C# TreeView 利用2层for循环生成,代码如下: //生成树 treeView1.Nodes.Clear(); //封装了数据库查询方法 MyDS_Grid = MyDataClass.ge ...
- 记录--canvas基础操作
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 以下是一些有关使用Canvas的技巧: 绘制基本形状:Canvas可以用于绘制各种基本形状,如矩形.圆形.线条等.使用 fillRe ...
- OpenLayers 点击显示经纬度Demo
这里给大家分享我在OpenLayers 地图开发工作中总结出的一下代码和注意点,希望对大家有所帮助 效果如下: 核心代码展示:附带讲解注释 var map = new ol.Map({ // 初始化地 ...
- 应急响应靶机训练-Linux2
靶机来源: 知攻善防实验室公众号 https://mp.weixin.qq.com/s/xf2FgkrjZg-yWlB9-pRXvw 我是在另一台主机上通过ssh连接到靶机进行解题的,我的ip为192 ...