为什么用AvtiveMQ以同步的方式发送消息,速度比较慢?

BossFriday 2011-03-17 10:36:53
为什么用AvtiveMQ以同步的方式发送消息,速度比较慢?
想知道是否什么设置不对。Server端采用的持久化方式用的是:
<persistenceAdapter>
<!--<kahaDB directory="${activemq.base}/data/kahadb"/>-->
<amqPersistenceAdapter directory="activemq-data" maxFileLength="32mb"/>
</persistenceAdapter>
如果用kahaDB 的方式,更慢。才500多条/秒
由于应用不想使用异步的方式发送消息。所以想请问熟悉它的朋友,是否有解决方法?
private void Send()
{
btnSend.Enabled = false;

var factory = new ConnectionFactory(BrokerUri);
using (var connection = factory.CreateConnection())
{
using (var session = connection.CreateSession())
{
var destination = SessionUtil.GetDestination(session, Program.NormalQueueDestination);
using (var producer = session.CreateProducer(destination))
{
connection.Start();
var mediaTaskId = 100000000000000;
var stopwatch = new Stopwatch();
var index = 1;
for (var i = 1; i <= Program.MessageCount; i++)
{
if (index == 1)
{
stopwatch.Start();
}

try
{
mediaTaskId++;
var message = session.CreateMapMessage();
Common.SetMapMessage(message, Common.GetMessageObj(mediaTaskId.ToString()));
producer.Send(message);
index++;
if (index == Program.StatisticsMessageCountSpan)
{
stopwatch.Stop();
var spendSeconds = stopwatch.Elapsed.TotalSeconds;
var speed = Program.StatisticsMessageCountSpan / spendSeconds;
Debug.WriteLine("Send " + Program.StatisticsMessageCountSpan + " Messages Spend:" + spendSeconds + " Seconds. (" + speed.ToString("0.00") + "/s)");

stopwatch.Reset();
index = 1;
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
}
}
}

btnSend.Enabled = true;
MessageBox.Show("Send Done!");
}
...全文
133 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧