我想创建一个客户组件 trace() 并希望在流程中使用它。
类似于 CustomFlows.from(“”).trace().get();
你能建议我怎么做吗?似乎集成流定义是封闭的,不可扩展。
这是一个有趣的技术...但是现在我不相信我们应该允许FlowBuilder
进行这样的扩展......请随时就此事提出GitHub问题,我们将来会看到如何处理。
对于这样的扩展,您应该了解框架如何在后台工作。
让我们考虑最简单的组件 .bridge()
!它的目标是将消息从一个通道传输到另一个通道。因此,此组件是请求-答复
类型,必须与其两侧的两个通道绑定:
.channel()
.bridge()
.channel()
当然,DSL可以在那些我们没有明确定义的地方创建DirectChannel
。或者,如果我们以结束 - .get()
完成流程,我们也可以依赖 replyChannel
标头。等等。
BridgeHandler
是一个开箱即用的组件,这就是我们为它提供显式 DSL 方法的原因。
但从另一边来看,它有非常简单的代码:
public class BridgeHandler extends AbstractReplyProducingMessageHandler {
@Override
public String getComponentType() {
return "bridge";
}
@Override
protected Object handleRequestMessage(Message<?> requestMessage) {
return requestMessage;
}
@Override
protected boolean shouldCopyRequestHeaders() {
return false;
}
}
如您所见,它是一个消息处理程序
实现,因此我们可以直接像这样使用它:
.handle(new BridgeHandler())
从这里开始,我向您提出的问题是:如果您可以使用现有功能满足您的要求,那么给框架带来一些复杂性的原因是什么:实现MessageHandler
,扩展AbstractPayloadTransformer
。或者甚至只是忘记它们,并使用 POJO 方法调用执行所有操作,就像从 DSL 1.1
开始的这样:
@Override
protected IntegrationFlowDefinition<?> buildFlow() {
return from(this, "messageSource", e -> e.poller(p -> p.trigger(this::nextExecutionTime)))
.split(this)
.transform(this)
.aggregate(a -> a.processor(this, null), null)
.enrichHeaders(Collections.singletonMap("foo", "FOO"))
.filter(this)
.handle(this)
.channel(c -> c.queue("myFlowAdapterOutput"));
}
请参阅我关于此事的文章。
所以,你应该找到很多论据来说服我以这种方式扩展框架:-)。
问题内容: 我已经构建了自己的自定义react-bootstrap Popover组件: 该组件的呈现方式如下: 现在,我想向组件中添加自定义道具,例如:我的文字,并使用新道具在弹出框中设置一些内容,例如- 但随后我在浏览器中收到此警告: 警告:标签上的未知道具。从元素中删除这些道具。 现在,我想我可以删除零件并逐个插入所有原始道具,而无需自定义道具,但是这样我就失去了“淡入淡出”效果,这也是处理
我需要一个以编程方式插入的log4j2的自定义appender(我不想更改log4j2.xml,因为我需要默认使用该appender)。对于自定义appender,似乎有一个答案,即如何在log4j2中创建自定义appender?,但是如何在运行ti,e时添加appender呢?
我目前已经在iReport中打开了一个。jasper和。jrxml文件来编辑报告。我实际上只是添加一个新字段来保存变量“email”。 我设置了字段和变量。然而,当我编译时,我得到了这些错误。
问题内容: 如何添加自定义CSS文件?以下配置对我不起作用: 结果: 问题答案: 一种简单的方法是将其添加到您的: 然后将文件放入文件夹。
问题内容: 我是Java的初学者,正在尝试创建自定义类的数组。假设我有一个名为car的类,并且我想创建一组称为Garage的汽车。如何将每辆车添加到车库?这就是我得到的: 问题答案: 如果要使用数组,则必须保留一个包含车库中汽车数量的计数器。最好使用而不是数组:
好吧,假设我有两节课。一个顾客和一个商店。 我的问题是:
我想从maven转到gradle。 在pom中。xml文件我有一个自定义存储库: 它是一个简单的超文本传输协议Web服务器,带有. jar文件。 如何将此自定义回购添加到生成中。格拉德尔? 我尝试了此代码,但不起作用: 我的定制repo不是maven repo,但我在Gradle文档中没有找到可以指定URL的其他示例。
我正在学习JSwing,我发现了GridBagLayout。 我试图创建一个简单的计算器,我添加了多个JPanel设置每个首选大小,但当我调整窗框大小时,面板也不会调整大小。然后我发现了Gridbag的布局。 但我得到的是:GridBagLayout的计算器错误 } 应该是这样的:正确的计算器 我试过: 要锚定。。。但它不起作用, 创建多个JPanel(一个带有GridLayout),但不起作用