尝试将大约 50K 条消息加载到 KAFKA 主题中。在少数运行开始时低于异常但并非总是如此。
org.apache.kafka.common.KafkaException: Cannot execute transactional method because we are in an error state
at org.apache.kafka.clients.producer.internals.TransactionManager.maybeFailWithError(TransactionManager.java:784) ~[kafka-clients-2.0.0.jar:?]
at org.apache.kafka.clients.producer.internals.TransactionManager.beginAbort(TransactionManager.java:229) ~[kafka-clients-2.0.0.jar:?]
at org.apache.kafka.clients.producer.KafkaProducer.abortTransaction(KafkaProducer.java:679) ~[kafka-clients-2.0.0.jar:?]
at myPackage.persistUpdatesPostAction(MyCode.java:??) ~[aKafka.jar:?]
...
Caused by: org.apache.kafka.common.errors.ProducerFencedException: Producer
attempted an operation with an old epoch. Either there is a newer producer with
the same transactionalId, or the producer's transaction has been expired by the
broker.
Run Code Online (Sandbox Code Playgroud)
代码块如下:
public void persistUpdatesPostAction(List<Message> messageList ) {
if ((messageList == null) || (messageList.isEmpty())) {
return;
}
logger.createDebug("Messages in batch(postAction) …Run Code Online (Sandbox Code Playgroud) 在客户端通道 (SVRCONN) 上启用 SSL 时,我在从 Java 客户端连接到 IBM MQ8.0 时遇到问题。当在通道上禁用 SSL(SSLAUTH 到 OPTIONAL)时,流程工作正常。
客户端是带有 JRE1.7 的 java。MQ 服务器版本为 IBM MQ8.0
创建自签名证书并根据 MQ 设置参考正确交换。
javax.net.debug=ssl 选项在日志中确认证书交换和 SSL 握手成功。
但是当 java 客户端代码试图获取 MQManager 对象时,抛出 MQ 异常。
com.ibm.mq.MQException: MQJE001: Completion code '2', reason '2059' ...
caused by: com.ibm.jmqi.JmqiException: CC=2;RC=2059;AMQ9204: Connection to host '1.2.3.4(1414)' rejected. [1=com.ibm.jmqi.JmqiException[CC=2;RC=2059;AMQ9503: Channel negotiation failed. [3=CHANNEL.SVRCONN.SSL]],3=1.2.3.4(1414), 5=RemoteConnection.analyseSegment] ...
caused by: com.ibm.jmqi.JmqiException: CC=2;RC=2059;AMQ9503: Channel negotiation failed. [3=CHANNEL.SVRCONN.SSL]
Run Code Online (Sandbox Code Playgroud)
我已配置为在客户端和 MQ 客户端通道 (SVRCONN) 中使用 TLS_RSA_WITH_AES_256_CBC_SHA256 作为密码规范。
尝试使用其他密码规范,如 TLS_RSA_WITH_AES_128_CBC_SHA,错误仍然相同。
MQ server error log has …Run Code Online (Sandbox Code Playgroud)