Apache Camel和只读消息队列

时间:2016-08-06 15:33:33

标签: java amazon-s3 apache-camel

所以我将SQS与Apache Camel结合使用。某些消息引用了s3对象。我需要将此消息路由到另一个队列,但问题是我必须处理与此消息s3对象关联而不修改消息。

工作流程

  1. queue-1
  2. 获取身体[“ref”:“some-ref”]的消息
  3. 获取与消息关联的S3对象。
  4. 如果s3对象包含option,则将邮件传递给queue-2
  5. 如果s3对象不包含option,则将邮件传递给queue-3
  6. 我遇到了.process方法修改邮件正文的问题。

     from("queue-1")
                    .choice()
                    .when(header("option").isNotNull())
                        .process(new Processor() {
                            @Override
                            public void process(Exchange exchange) throws Exception {
                                //FETCH S3 OBJECT                            }
                        })
                        .process(new Processor() {
                            @Override
                            public void process(Exchange exchange) throws Exception {
                           //CHECK IF OBJECT HAS SOME OPTIONS
                            }
                        }).to("queue-2")
                    .when(header("option").isNull())
                        .process(new Processor() {
                            @Override
                            public void process(Exchange exchange) throws Exception {               
                            //CHECK IF BODY HAS SOME OPTIONS
                            }
                        }).to("queue-3)
                    .otherwise()
                        .log("Unknown");
    

    那么是否存在可以存储消息而无需修改消息的解决方案?

0 个答案:

没有答案