Dan*_*nny 7 spring spring-cloud-stream spring-cloud-function
我有一个服务,它从不同的消息队列接收不同的结构化消息。我们可以针对@StreamListener conditions每种消息类型选择如何处理该消息。举个例子:
我们收到两种不同类型的消息,它们具有不同的标头字段和值,例如
\n\n来自“订单”队列的传入:
\n\nOrder1: { Header: {catalog:groceries} }\nOrder2: { Header: {catalog:tools} }\nRun Code Online (Sandbox Code Playgroud)\n\n来自“发货”队列的传入:
\n\nShipment1: { Header: {region:Europe} }\nShipment2: { Header: {region:America} }\nRun Code Online (Sandbox Code Playgroud)\n\n每个队列都有一个绑定,根据该绑定,@StreamListener我可以按目录和区域以不同的方式处理消息
例如
\n\n@StreamListener(target = OrderSink.ORDER_CHANNEL, condition = "headers[\'catalog\'] == \'groceries\'")\npublic void onGroceriesOrder(GroceryOder order){\n...\n}\nRun Code Online (Sandbox Code Playgroud)\n\n那么问题是,如何使用新的 Spring Cloud Function 方法来实现这一点?
\n\n\n\nAlso, for SpEL, the root object of the evaluation context is Message so you can do evaluation on individual headers (or message) as well \xe2\x80\xa6\xe2\x80\x8b.routing-expression=headers[\'type\']
是否可以将路由表达式添加到绑定中,例如(在application.yml)
onGroceriesOrder-in-0:\n destination: order\n routing-expression: "headers[\'catalog\']==groceries"\nRun Code Online (Sandbox Code Playgroud)\n\n?
\n\n第一个答案后编辑\n如果此位置的上述表达式不可能,那么第一个答案意味着什么,那么我的问题如下:
\n\n据我了解,routing-expression: headers[\'catalog\']必须全局设置类似的表达式,因为结果映射到某些(消费者)函数。
我如何控制每个队列上的 2 个不同消息将转发到它们自己的消费者函数,例如
\n\nOrder1 --> MyOrderService.onGroceriesOrder()\nOrder2 --> MyOrderService.onToolsOrder()\nShipment1 --> MyShipmentService.onEuropeShipment()\nShipment2 --> MyShipmentService.onAmericaShipment()\nRun Code Online (Sandbox Code Playgroud)\n\n这对于 来说很容易@StreamListener,因为每个方法都会在不同的条件下获得自己的@StreamListener注释。如何使用新routing-expression设置来实现这一点?\n?
除了以上不是有效的表达之外,但我认为您的意思是headers['catalog']==groceries. 如果是这样,您期望通过评估它会发生什么,因为唯一的两个选项可能是真/假。无论如何,这些都是修辞性的,但有助于理解问题以及如何解决它。
该表达式必须产生要路由至的函数值。所以。。。
routing-expression: headers['catalog']- 假设catalogheader 的实际值是要调用的函数的名称
routing-expression: headers['catalog']==groceries ? 'processGroceries' : 'processOther'- 将值“groceries”映射到“processGroceries”函数。
| 归档时间: |
|
| 查看次数: |
4151 次 |
| 最近记录: |