首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring bean依赖于mule端点

Spring bean依赖于mule端点
EN

Stack Overflow用户
提问于 2017-03-15 05:27:13
回答 2查看 354关注 0票数 0

我在Mule中有一个bean,它需要在TCP端点关机时断开连接之前发送消息。该bean实现了生命周期,并配置了“depends on =connector”,但看起来“depends on”对关闭顺序没有影响。在我的bean上调用stop方法时,端点不再连接。在端点或连接器上调用"stop“方法之前,有没有办法在bean上调用它?我正在使用Mule 3.7CE。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-22 23:10:31

尝试侦听MuleContextNotification并等待CONTEXT_STOPPING操作触发您的TCP调用。

如下例所示:

代码语言:javascript
运行
复制
public class MuleContextListener implements MuleContextNotificationListener<MuleContextNotification>,MuleContextAware {

    private MuleContext context;
    private final static Logger logger = LogManager.getLogger(MuleContextListener.class);

    @Override
    public void onNotification(MuleContextNotification notification) {
        logger.info("NOTIFICATION RECEIVED!!!!!");
        logger.info(MuleContextNotification.getActionName(notification.getAction()));
        if(notification.getAction() == MuleContextNotification.CONTEXT_STOPPING ){
            //replace with your tcp call 
            logger.info(" MY ACTION HAS BEEN TRIGGER");
        }
    }

    @Override
    public void setMuleContext(MuleContext context) {
        this.context = context;
    }
}

为了测试,我有另一个实现生命周期可停止的bean……

代码语言:javascript
运行
复制
public class ClassStopLc implements Stoppable {

    @Override
    public void stop() throws MuleException {
        logger.info(" ClassStopLC Stopping");
    }

如果我检查我的日志:

代码语言:javascript
运行
复制
2017-03-22 16:08:26,827 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.MuleContextListener - NOTIFICATION RECEIVED!!!!!
2017-03-22 16:08:26,827 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.MuleContextListener - mule context stopping
2017-03-22 16:08:26,827 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.MuleContextListener -  MY ACTION HAS BEEN TRIGGER
.
.
.
2017-03-22 16:08:32,077 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  org.mule.util.queue.QueueXaResourceManager - Stopping ResourceManager
2017-03-22 16:08:32,077 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  org.mule.util.queue.QueueXaResourceManager - Stopped ResourceManager
2017-03-22 16:08:32,080 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.ClassStopLc -  ClassStopLC Stopping
2017-03-22 16:08:32,082 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.MuleContextListener - NOTIFICATION RECEIVED!!!!!
2017-03-22 16:08:32,082 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.MuleContextListener - mule context stopped
2017-03-22 16:08:32,083 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.MuleContextListener - NOTIFICATION RECEIVED!!!!!
2017-03-22 16:08:32,083 [[mulecontextaware].mulecontextawareFlow.1.02] INFO  mulecontextaware.MuleContextListener - mule context disposing

不确定停止阶段是否允许您进行TCP调用而没有任何问题,您可以尝试让我知道吗?我很好奇:)

票数 0
EN

Stack Overflow用户

发布于 2017-03-21 20:38:38

你能指定你的Bean实现的是哪个生命周期吗?另外,这是单例Bean还是原型Bean?

根据文档-- https://docs.mulesoft.com/mule-user-guide/v/3.7/developing-components#component-lifecycle

您可以实现接口org.mule.api.lifecycle.Callable,只需使用方法onCall,就可以触发任何操作。

示例:

代码语言:javascript
运行
复制
   public class MyClass implements Callable {

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
    //DO SOMETHING
    //Call STOP method
    return eventContext.getMessage().getPayload();
}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42796858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档