0

有没有办法根据来自 RabbitMQ 的消息在 Quartz 中启动工作,并使消息的内容可用于工作?

4

2 回答 2

0

我不知道 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())。

于 2012-10-02T07:27:15.667 回答
0

我不明白为什么不...您可以订阅 RabbitMQ 队列,当消息到达时您可以做任何事情,包括触发 Quartz.NET 作业。

于 2019-02-22T12:19:28.493 回答