为什么用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!");
}
想知道是否什么设置不对。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!");
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货