Quartz Scheduler和RabbitMQ

问题描述 投票:0回答:2

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

rabbitmq quartz-scheduler
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())。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.