为什么用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!");
        }