sách gpt4 ai đã đi

jms - 为 Camel JMS 生产者设置 ConnectionFactory : camel-jms Vs camel-sjms

In lại 作者:行者123 更新时间:2023-12-01 19:36:21 30 4
mua khóa gpt4 Nike

再见,我的基本要求是有一个可以发送消息的路由,并将其放在 JMS 队列中。 camel 上下文在 JavaEE 6 容器中运行,即 JBoss AS 7.1.1,因此它是 HornetQ for JMS 随附的;我通过 bootstrap 单例启动上下文,但我不使用 camel-cdi。到目前为止,我一直在使用 camel-jms 组件,但现在我希望尽可能迁移到 camel-sjms,因为没有 Spring 。

我的问题是:在这种 JavaEE 场景中,Chính xáccamel-sjms 配置 ConnectionFactory 的方法是什么?

使用 camel-jms,我可以将它放在端点 URL 中,就像 .to("jms:myQueue?connectionFactory=#ConnectionFactory") 一样简单。而使用 camel-sjms 在我看来我需要自己创建一个 SJMSComponent 的实例,设置 connectionFactory,并在启动它之前在 camel 上下文中设置这个实例。

我在下面有 camel-jms 与 camel-sjms 案例的代码,我想知道我是否正确“迁移”了 ConnectionFactory 的设置。谢谢。


camel-jms,这是按以下方式完成的:

@Singleton
@Startup
public class CamelBootstrap {
private CamelContext camelContext;
private ProducerTemplate producerTemplate;

public CamelContext getCamelContext() {
return camelContext;
}

public ProducerTemplate getProducerTemplate() {
return producerTemplate;
}

@PostXây dựng
public void init() throws Exception {
camelContext = new DefaultCamelContext();
camelContext.addRoutes(new MyCamelRoutes());
camelContext.start();
producerTemplate = camelContext.createProducerTemplate();
}
}

没什么特别的,在 MyCamelRoutes 中,我可以使用以下方法进行路由配置:

.to("jms:myQueue?connectionFactory=#ConnectionFactory")


camel-sjms,现在我必须修改 bootstrap 单例:

@Singleton
@Startup
public class CamelBootstrap {

@Resource(mappedName="java:/ConnectionFactory")
private ConnectionFactory connectionFactory;

private CamelContext camelContext;
private ProducerTemplate producerTemplate;

public CamelContext getCamelContext() {
return camelContext;
}

public ProducerTemplate getProducerTemplate() {
return producerTemplate;
}

@PostXây dựng
public void init() throws Exception {
camelContext = new DefaultCamelContext();

SjmsComponent sjms = new SjmsComponent();
sjms.setConnectionFactory(connectionFactory);
camelContext.addComponent("sjms", sjms);

camelContext.addRoutes(new MyCamelRoutes());
camelContext.start();
producerTemplate = camelContext.createProducerTemplate();
}
}

请注意connectionFactory 的@Tài nguyên 这是作为对SjmsComponent 实例的引用传递的,该实例传递给camelContext。然后在 MyCamelRoutes 中,我可以在使用 sjms 进行路由配置时使用:

.to("sjms:myQueue")


代码似乎在这两种情况下都能正常工作,但据我所知,如果配置不正确,ConnectionFactory 的配置很容易受到性能问题的影响,因此我更愿意问我是否迁移到了 camel-sjms正确适用于我的 JavaEE 场景。再次感谢

1 Câu trả lời

如果您不对 JMS 资源进行缓存/池化,则可能会发生性能问题。缓存通常通过将 ConnectionFactory 包装在某些 Caching ConnectionFactory 库中进行配置 - 或者将控制权移交给应用程序服务器。

Camel SJMS 包含内置池。但是,如果您有一个容器管理的资源来处理 JMS 连接,您应该考虑使用它。 SJMS 有一些设施来处理这个问题,ConncetionResource instead of ConnectionFactory .

关于jms - 为 Camel JMS 生产者设置 ConnectionFactory : camel-jms Vs camel-sjms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25217846/

30 4 0
Bài viết được đề xuất: swing - 在 Fest 中实现匹配器的 Groovy 闭包
Bài viết được đề xuất: java - 反转链表后对指针的影响
Bài viết được đề xuất: java - 为什么Java在break语句后不重置内循环的值?
Bài viết được đề xuất: ruby-on-rails - activeadmin 添加日期选择器
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com