Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheCamel和只读消息队列_Java_Amazon S3_Apache Camel - Fatal编程技术网

Java ApacheCamel和只读消息队列

Java ApacheCamel和只读消息队列,java,amazon-s3,apache-camel,Java,Amazon S3,Apache Camel,因此,我将使用SQS与ApacheCamel相结合。有些消息引用了s3对象。我需要将此消息路由到另一个队列,但问题是我必须在不修改消息的情况下处理与此消息s3对象关联的消息 工作流程是 从queue-1 获取与消息关联的S3对象 如果s3对象包含选项将消息传递给队列2 如果s3对象不包含选项将消息传递给队列3 我面临着.process方法修改消息体的问题 from("queue-1") .choice() .when(header

因此,我将使用SQS与ApacheCamel相结合。有些消息引用了s3对象。我需要将此消息路由到另一个队列,但问题是我必须在不修改消息的情况下处理与此消息s3对象关联的消息

工作流程是

  • queue-1
  • 获取与消息关联的S3对象
  • 如果s3对象包含
    选项
    将消息传递给
    队列2
  • 如果s3对象不包含
    选项
    将消息传递给
    队列3
    我面临着
    .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");
    

    那么,有没有一种解决方案可以在不修改消息的情况下存储消息

    你用什么版本的骆驼?以及消息上正在修改的内容。那个么在那个些处理器方法中你们做了什么呢?@Murmav,若你们不改变处理器中的交换体的进出(取决于你们的代码),那个么消息应该是不变的