- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用事务工作获取 Camel 路由 JMS->HTTP4,但当发生异常时消息不会传输到 ActiveMQ.DLQ,我不明白为什么。
下面的示例说明了如果 REST 服务的服务器宕机并且无法下发路由会发生什么情况。
我得到了正确的异常:
2018-01-18 12:30:50:962-[Camel (LRM-Relay) thread #5 - JmsConsumer[myIncomingQueue]] WARN o.a.c.s.s.TransactionErrorHandler - Transaction rollback (0x30a1c779) redelivered(false) for (MessageId: ID:MGR-MacBook-Pro.local-51837-1516262355358-4:2:1:1:16 on ExchangeId: ID-MGR-MacBook-Pro-local-1516275047663-0-1) caught: java.net.ConnectException: Cannot connect to CORE REST
2018-01-18 12:30:50:965-[Camel (LRM-Relay) thread #5 - JmsConsumer[myIncomingQueue]] WARN o.a.c.c.j.EndpointMessageListener - Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - java.net.ConnectException: Cannot connect to CORE REST]
org.apache.camel.RuntimeCamelException: java.net.ConnectException: Cannot connect to CORE REST …
但是该消息已被消耗并从队列中删除。我的假设是使用事务/事务化 Camel 和 AMQ 可以解决此问题并将消息移动到 ActiveMQ.DLQ。
我已阅读《Camel in Action》第一版的第 9 章。并用谷歌搜索,但没有找到任何解决我的问题的方法。
我知道我可以创建/定义自己的 TransactionErrorHandler() 并将消息存储在我选择的队列中,但我的印象是,这是使用事务处理时的默认设置......
我正在使用已安装和配置的独立 ActiveMQ 5.15.2 vanilla。
Camel 2.20.1
MacOS 10.13.2 上的 Java 8_144
我的配置:
@Cấu hình
public class Config {
/**
* The Camel context.
*/
final CamelContext camelContext;
/**
* The Broker url.
*/
@Value("${jms.broker.url}")
private String brokerURL;
/**
* Instantiates a new Config.
*
* @param camelContext the sisyfos context
* @param metricRegistry the metric registry
*/
@Autowired
public Config(final CamelContext camelContext, final MetricRegistry metricRegistry) {
this.camelContext = camelContext;
this.metricRegistry = metricRegistry;
}
@Đậu
public ActiveMQConnectionFactory activeMQConnectionFactory() {
final ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
activeMQConnectionFactory.setBrokerURL(brokerURL);
return activeMQConnectionFactory;
}
/**
* Pooled connection factory pooled connection factory.
*
* @return the pooled connection factory
*/
@Đậu
@Primary
public PooledConnectionFactory pooledConnectionFactory() {
final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setMaxConnections(8);
pooledConnectionFactory.setMaximumActiveSessionPerConnection(500);
pooledConnectionFactory.setConnectionFactory(activeMQConnectionFactory());
return pooledConnectionFactory;
}
/**
* Jms configuration jms configuration.
*
* @return the jms configuration
*/
@Đậu
public JmsConfiguration jmsConfiguration() {
final JmsConfiguration jmsConfiguration = new JmsConfiguration();
jmsConfiguration.setConnectionFactory(pooledConnectionFactory());
jmsConfiguration.setTransacted(true);
jmsConfiguration.setTransactionManager(transactionManager());
jmsConfiguration.setConcurrentConsumers(10);
return jmsConfiguration;
}
/**
* Transaction manager jms transaction manager.
*
* @return the jms transaction manager
*/
@Đậu
public JmsTransactionManager transactionManager() {
final JmsTransactionManager transactionManager = new JmsTransactionManager();
transactionManager.setConnectionFactory(pooledConnectionFactory());
return transactionManager;
}
/**
* Active mq component active mq component.
*
* @return the active mq component
*/
@Đậu
public ActiveMQComponent activeMQComponent(JmsConfiguration jmsConfiguration,
PooledConnectionFactory pooledConnectionFactory,
JmsTransactionManager transactionManager) {
final ActiveMQComponent activeMQComponent = new ActiveMQComponent();
activeMQComponent.setConfiguration(jmsConfiguration);
activeMQComponent.setTransacted(true);
activeMQComponent.setUsePooledConnection(true);
activeMQComponent.setConnectionFactory(pooledConnectionFactory);
activeMQComponent.setTransactionManager(transactionManager);
return activeMQComponent;
}
}
我的路线:
@Thành phần
public class SendToCore extends SpringRouteBuilder {
@Ghi đè
public void configure() throws Exception {
Logger.getLogger(SendToCore.class).info("Sending to CORE");
//No retries if first fails due to connection error
interceptSendToEndpoint("http4:*")
.choice()
.when(header("JMSRedelivered").isEqualTo("false"))
.throwException(new ConnectException("Cannot connect to CORE REST"))
.end();
from("activemq:queue:myIncomingQueue")
.transacted()
.setHeader(Exchange.CONTENT_TYPE, constant("application/xml"))
.to("http4:localhost/myRESTservice")
.log("${header.CamelHttpResponseCode}")
.end();
}
}
您可能会在某些 bean 中发现冗余声明,这就是我试图解决的问题...
添加一个指向我的 Github 存储库的链接,并用一个小型测试项目来说明这一点:
https://github.com/hakuseki/transacted
1 Câu trả lời
这可能是SpringBoot自动配置的问题。
nếu như消息丢失,Camel 的 ActiveMQ 组件不会发送到 DLQ,而是会自动提交消息,而不是等到工作完成。
Notice: my config does not have a transaction manager because it is not needed for your case. Instead just set in the
ActiveMQComponent
transacted
ĐẾNĐÚNG VẬY
VàlazyCreateTransactionManager
ĐẾNSAI
. Then you got a "local" transaction with your broker and that is all you need.
.transacted()
(需要事务管理器,但不需要“JMS 本地事务”路由)MainApplication
中禁用JMS和ActiveMQ的自动配置:@SpringBootApplication(exclude = { JmsAutoConfiguration.class, ActiveMQAutoConfiguration.class})
Java 配置:
@Value("${jms.broker.url}")
String brokerURL;
@Đậu
public ActiveMQConnectionFactory connectionFactory() {
final ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
activeMQConnectionFactory.setBrokerURL(brokerURL);
return activeMQConnectionFactory;
}
@Đậu
@Primary
public PooledConnectionFactory pooledConnectionFactory(ConnectionFactory cf) {
final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setMaxConnections(1);
pooledConnectionFactory.setConnectionFactory(cf);
return pooledConnectionFactory;
}
@Bean(name = "activemq")
@ConditionalOnClass(ActiveMQComponent.class)
public ActiveMQComponent activeMQComponent(ConnectionFactory connectionFactory) {
ActiveMQComponent activeMQComponent = new ActiveMQComponent();
activeMQComponent.setConnectionFactory(connectionFactory);
activeMQComponent.setTransacted(true);
activeMQComponent.setLazyCreateTransactionManager(false);
return activeMQComponent;
}
最后,为了“运行”该路线,我添加了一个小型 Camel Route 测试
@RunWith(CamelSpringBootRunner.class)
@SpringBootTest(classes = MainApplication.class)
public class SampleCamelApplicationTest {
@Produce(uri = "activemq:queue:myIncomingQueue")
protected ProducerTemplate template;
@Bài kiểm tra
public void shouldProduceMessages() throws Exception {
template.sendBody("test");
Thread.sleep(20000); //wait for ActiveMQ redeliveries
}
}
如果我运行此测试,消息将发送到 ActiveMQ.DLQ
.
希望这有帮助
关于java - Camel JMS 事务处理不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321633/
Đối với Metal, nếu tôi mipmap kết cấu chính, tôi có cần mipmap các kết cấu lấy mẫu nhiều lần không? Tôi đã đọc tài liệu của Apple nhưng không nhận được thông tin nào về vấn đề này. Câu trả lời hay nhất Mipmapping áp dụng cho
Mã tôi đang sử dụng có một Bộ điều khiển trong mã Groovy ở phía sau giúp hiển thị GSP (Trang máy chủ Groovy). Đối với phần frontend, chúng tôi sử dụng React-router v4 để xử lý định tuyến. Vấn đề tôi đang gặp phải là
Chúng tôi đang xây dựng một trang web lớn. Chúng tôi đang cân nhắc xem nên xử lý HTML ở phía máy chủ (ASP .Net) hay ở phía máy khách. Ví dụ, chúng ta có các tệp HTML hoạt động như các mẫu để tạo tab. Nhận HT từ máy chủ
Tôi đang cố gắng tải hình ảnh vào một mảng trong void setup() nhưng tôi nhận được lỗi này khi thực hiện: "Kiểu không khớp, 'processing.core.PImage' không khớp với 'processing.
Tôi đang cố gắng cập nhật thẻ khách hàng trên Shopify bằng ứng dụng riêng của họ. Tôi đã thử với người đưa thư và mọi thứ đều hoạt động tốt nhưng thông qua AJAX, tôi nhận được lệnh gọi lại thành công thay vì lỗi nhưng sau khi thành công, tôi nhận được liên kết xác thực thay thế
Làm thế nào tôi có thể thay đổi biểu tượng mặc định được xuất ra bởi ứng dụng Processing appIconTest.exe của tôi trong một cửa sổ? Mặc định: Câu trả lời hay nhất Sau một thời gian nghiên cứu, giải pháp đơn giản nhất mà tôi có thể tìm thấy là: Vào ...\process
Tôi đang tạo một trò chơi nhỏ đơn giản trong Processing nhưng cần một số trợ giúp. Tôi có một file mp3 và muốn thêm nó vào ứng dụng của mình để chạy lặp lại ở chế độ nền. Liệu điều này có thể thực hiện được không? Cảm ơn bạn rất nhiều. Câu trả lời hay nhất Bạn có thể sử dụng thư viện âm thanh. Xử lý đã đi kèm với
Tôi có một số nút được tạo như thế này: Trong setup() PImage[] imgs1 = {loadImage("AREA1_1.png"),loadImage("AREA1_2.png"),loadImage
Tôi đang cố gắng tạo một trò chơi nhiều người chơi bằng Processing nhưng không biết cách chia màn hình thành hai để hiển thị các tình huống khác nhau cho người chơi? Giống như trong c#, chúng ta có Viewport leftViewport,rightView
Tôi đã cố gắng sử dụng vùng lân cận của Moore để tạo ra các máy tự động di động trong Processing và cho đến nay đã đạt được thành công lớn. Tôi đã có thể vận hành hệ thống cơ bản và bây giờ tôi muốn thử nghiệm nó bằng cách thêm vào các tính năng khác nhau. Bây giờ, tôi kiểm tra xem các tế bào còn sống hay không. Nếu vậy, tôi sử dụng fill
Có cách nào để kiểm tra mức sử dụng tài nguyên bằng mã JavaScript không? Tôi có thể kiểm tra mức sử dụng RAM và mức sử dụng CPU của một tập lệnh không? Vì có nhiều cách để thực hiện một việc gì đó, tôi có thể viết mã bằng nhiều phương pháp khác nhau và lưu vào hai tệp khác nhau.
Tôi đang cố gắng tìm ra cách xử lý một danh sách như thế này: [ [[4,6,7], [1,2,4,6]] , [[10,4,2,4], [1]] ] là danh sách các danh sách số nguyên. Tôi muốn hàm của mình lấy danh sách này làm đầu vào và trả về các số nguyên trong danh sách mà không trùng lặp.
Có cách nào để loại bỏ MethodChannel/EventChannel khi không cần thiết không? Tôi hỏi vì tôi muốn tạo nhiều kênh phương thức/sự kiện cho một đối tượng. Ví dụ: class Call { ... fields
Tôi có một câu hỏi về cách xử lý ConnectionResetError trong Python3. Điều này thường xảy ra khi tôi sử dụng hàm urllib.request.Request. Tôi muốn biết liệu chúng ta có thể
Tôi đã vật lộn với vấn đề này trong nhiều giờ nhưng vô ích. Mã này rất đơn giản, một quả bóng nảy (hạt). Khởi tạo vận tốc của hạt ở mức (0, 0) sẽ khiến hạt liên tục nảy lên và xuống. Thay đổi vận tốc ban đầu của hạt thành (0, 0,01) hoặc bất kỳ số thập phân nào có dấu phẩy động.
Tôi đã làm hỏng chuyện của mình. Tôi muốn thêm python3.6 vào hệ thống của mình nên quyết định gỡ cài đặt phiên bản hiện có trong Ubuntu 19.10. Nhưng bây giờ mỗi lần tôi muốn cài đặt cái gì đó tôi lại nhận được lỗi như thế này: dpkg: error w
Tôi đang gặp khó khăn với chức năng NA trong gói Rpart. Tôi nhận được khung dữ liệu sau (mã bên dưới) Kết quả VarA VarB 1 1 1 0 2 1 1 1
Tôi sử dụng Java với JSF, container Glassfish 3. Trong ứng dụng web của mình, tôi đang cố gắng triển khai hệ thống quản lý tập tin (hình ảnh). Tôi có một config.properties mà tôi đọc được nội dung tải lên
Vậy là tôi đã làm việc ở Processing được vài tuần rồi và mặc dù không có kinh nghiệm lập trình, tôi đã chuyển sang các dự án phức tạp hơn. Tôi đang viết một chương trình mô phỏng quá trình tiến hóa tạo ra những sinh vật có đặc tính ngẫu nhiên. Sau này tôi sẽ thêm tính năng sao chép, nhưng hiện tại những sinh vật này chỉ trôi nổi trên màn hình.
Có ai biết Delphi 2009 xử lý "with" theo cách khác không? Tôi đã giải quyết được vấn đề ngày hôm qua chỉ bằng cách phân tích "with" thành tham chiếu đầy đủ, như "with Datamodule, Dataset, MainForm".
Tôi là một lập trình viên xuất sắc, rất giỏi!