有没有办法根据来自RabbitMQ的消息启动Quartz中的工作并使该消息的内容可用于该作业?
我不知道RabbitMQ,但这里有一个基本代码:
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
你安排你的工作是这样的:
JobDetail job1 = newJob(MessageJob.class)
.usingJobData("message", message)
.build();
Trigger trigger = newTrigger()
.startNow()
.build();
在MessageJob
里面你可以找回它:
public class MessageJob implements Job {
@Override
public void execute(final JobExecutionContext context) throws JobExecutionException {
final String message = context.getJobDetail().getJobDataMap().getString("message");
//...
}
请注意,你不能“开始”一项工作,你只能安排它在未来运行一段时间(在例子中它将尽快运行 - startNow()
)。
我不明白为什么不...你可以订阅一个RabbitMQ队列,当一条消息到达时你可以做任何事情,包括触发一个Quartz.NET作业。