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 に答える