@DanielLangr @luxun @cdhowie 对于 XY 问题感到抱歉。我不确定我能解释清楚,但我尽力了。情况几乎是这样的:有一个基础对象“Worker”和一些子对象。Chef\xe3\x80\x81tailor...孩子们的动作和walk\xe3\x80\x81run\xe3\x80\x81sleep...一样,但是技能不同,厨师可以做食物,裁缝可以做衣服。Invoker 调用 Worker dothings 但并不确切知道他们的职业。所以我在 Worker 的基础对象上添加了一个接口 dothings(Thing)。Thing 是一个枚举,值为 MakeFood\xe3\x80\x81MakeClothes...
\n\nWorker *w = new Chef();\nw->dothings(MakeFood);//\nw->dothings(MakeClothes);//throw exception "w do not have skill"\nRun Code Online (Sandbox Code Playgroud)\n\n所以我认为也许可以在儿童中使用一个容器来描述它可以做什么以及如何做。
\n\n希望我解释清楚。还有更好的解决方案吗?
\n\n我想将不同的 lambda 表达式放入列表或 Qmap 中,如下所示。
\n\nQmap<String, lambda> map;\nmap.insert("first",[](int i) -> int {return i;});\nmap.insert("second",[](string s) -> string {return s;});\nRun Code Online (Sandbox Code Playgroud)\n\n在C++中可以吗?lambda 的类型是什么?
\n我不确定我对 errorHandler 和 returnExceptions 的理解是否正确。
但这是我的目标:我从 App_A 发送了一条消息,使用 @RabbitListener 在 App_B 中接收消息。
我假设如果APP_B在处理消息过程中出现业务异常,通过在@RabbitListener上以正确的方式设置errorHandler和returnExceptions可以让异常返回到App_A。
我理解正确吗?
如果我是对的,如何以正确的方式使用它?
使用我的代码,我在 APP_A 中什么也得不到。
这是我在 APP_B 中的代码
错误处理程序:
@Component(value = "errorHandler")
public class ErrorHandler implements RabbitListenerErrorHandler {
@Override
public Object handleError(Message arg0, org.springframework.messaging.Message<?> arg1,
ListenerExecutionFailedException arg2) throws ListenerExecutionFailedException {
throw new ListenerExecutionFailedException("msg", arg2, null);
}
}
Run Code Online (Sandbox Code Playgroud)
兔子监听器:
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(value = "MRO.updateBaseInfo.queue", durable = "true"),
exchange = @Exchange(name = "MRO_Exchange", type = ExchangeTypes.DIRECT, durable = "true"),
key = "baseInfoUpdate"
), …Run Code Online (Sandbox Code Playgroud)