石英调度器可以';在生产中添加RabbitMQ.dll后,无法运行
在某个时间(一周)之前,我的应用程序运行良好。所有的调度程序都工作得很好。当时,我们使用MSMQ进行队列目的 现在,我们实现所有MSMQ并将其传输到RabbitMQ。RabbitMQ(具有优先级)工作正常,但现在quartz调度程序停止工作了吗 我们使用石英版本1.0.2.3 RabbitMQ版本3.6.0 有人能帮我解决这个问题吗 RabbitMQ代码段:石英调度器可以';在生产中添加RabbitMQ.dll后,无法运行,rabbitmq,quartz-scheduler,Rabbitmq,Quartz Scheduler,在某个时间(一周)之前,我的应用程序运行良好。所有的调度程序都工作得很好。当时,我们使用MSMQ进行队列目的 现在,我们实现所有MSMQ并将其传输到RabbitMQ。RabbitMQ(具有优先级)工作正常,但现在quartz调度程序停止工作了吗 我们使用石英版本1.0.2.3 RabbitMQ版本3.6.0 有人能帮我解决这个问题吗 RabbitMQ代码段: var factory = GetConnectionFactory(); using (var connecti
var factory = GetConnectionFactory();
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
IDictionary<String, Object> args = new Dictionary<String, Object>();
channel.BasicQos(0, 1, false);
args.Add("x-max-priority", 3);
channel.QueueDeclare(queueName, true, false, false, args);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume(queueName, false, "", args, consumer);
while (true)
{
var ea = consumer.Queue.Dequeue();
string message = Encoding.UTF8.GetString(ea.Body);
ProcessMessageFromQueue(message);
Log.Info("Message Received from " + queueName + ": " + message + " , ChannelId : " + channel.NextPublishSeqNo + " ,ea:" + ea.DeliveryTag);
channel.BasicAck(ea.DeliveryTag, false);
//MessageQueueMessage messageQueueMessage = Utility.DeserializeObject<MessageQueueMessage>(message);
DeleteRedisVAriableByKey(message);
}
}
}
提前谢谢 这是线程的问题 我们有一个石英的螺纹数参数。假设它的值是10 我们在quartz启动作业时启动一个rabbitmq队列 您可以在上面的代码中看到,在rabbitmq启动方法中,有一个while循环。 所以它永远不会结束 在第二次触发作业后,它会再创建一个消费者,并且不会结束 一段时间后,线程接近线程限制 一旦线程达到线程限制,就不会创建新线程。它停止了我们的计划
NameValueCollection properties = null;
ISchedulerFactory sf = null;
IScheduler sched = null;
JobDetail jobDetail = null;
Quartz.CronTrigger trigger = null;
properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "RemoteServer";
properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
properties["quartz.threadPool.threadCount"] = "5";
properties["quartz.threadPool.threadPriority"] = "Normal";
sf = new StdSchedulerFactory(properties);
sched = sf.GetScheduler();
sched.Start();
jobDetail = new JobDetail("MyJOb", "default", typeof(MyClass));
trigger = new CronTrigger("MyTrigger", "default", ConfigurationManager.AppSettings["CronExpression"]);
sched.ScheduleJob(jobDetail, trigger);