@@ -833,6 +833,7 @@ public void shouldPreserveDlqHeadersWithErrorInformation() throws Exception {
833
833
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
834
834
connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
835
835
connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
836
+ connectorConfigProps .put (MQSourceConnector .DLQ_CONTEXT_HEADERS_ENABLE_CONFIG , "true" );
836
837
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
837
838
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
838
839
"com.ibm.eventstreams.connect.mqsource.builders.JsonRecordBuilder" );
@@ -918,6 +919,7 @@ public void shouldPreserveJmsPropertiesInDlqMessages() throws Exception {
918
919
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
919
920
connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
920
921
connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
922
+ connectorConfigProps .put (MQSourceConnector .DLQ_CONTEXT_HEADERS_ENABLE_CONFIG , "true" );
921
923
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
922
924
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_JMS_PROPERTY_COPY_TO_KAFKA_HEADER , "true" );
923
925
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
@@ -1028,6 +1030,7 @@ public void verifyHeadersWithErrorTolerance() throws Exception {
1028
1030
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
1029
1031
connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
1030
1032
connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
1033
+ connectorConfigProps .put (MQSourceConnector .DLQ_CONTEXT_HEADERS_ENABLE_CONFIG , "true" );
1031
1034
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
1032
1035
connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
1033
1036
"com.ibm.eventstreams.connect.mqsource.builders.JsonRecordBuilder" );
@@ -1106,6 +1109,56 @@ public void verifyHeadersWithErrorTolerance() throws Exception {
1106
1109
.toString ().contains ("com.ibm.eventstreams.connect.mqsource.JMSWorker.toSourceRecord" )).isTrue ();
1107
1110
}
1108
1111
1112
+ @ Test
1113
+ public void verifyHeadersWithErrorTolerance_WithDLQHeaderContextDisabled () throws Exception {
1114
+ connectTask = getSourceTaskWithEmptyKafkaOffset ();
1115
+
1116
+ final Map <String , String > connectorConfigProps = createDefaultConnectorProperties ();
1117
+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_TOPIC , "mytopic" );
1118
+ connectorConfigProps .put (ConnectorConfig .ERRORS_TOLERANCE_CONFIG , "all" );
1119
+ connectorConfigProps .put (MQSourceConnector .DLQ_TOPIC_NAME_CONFIG , "__dlq.mq.source" );
1120
+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_MESSAGE_BODY_JMS , "true" );
1121
+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_RECORD_BUILDER ,
1122
+ "com.ibm.eventstreams.connect.mqsource.builders.JsonRecordBuilder" );
1123
+ connectorConfigProps .put (MQSourceConnector .CONFIG_NAME_MQ_JMS_PROPERTY_COPY_TO_KAFKA_HEADER , "true" );
1124
+
1125
+ connectTask .start (connectorConfigProps );
1126
+
1127
+ final TextMessage message = getJmsContext ().createTextMessage ("Invalid JSON message" );
1128
+ message .setStringProperty ("teststring" , "myvalue" );
1129
+ message .setIntProperty ("volume" , 11 );
1130
+ message .setDoubleProperty ("decimalmeaning" , 42.0 );
1131
+
1132
+ // Both invalid and valid messages are received
1133
+ final List <Message > testMessages = Arrays .asList (
1134
+ message , // Poison message
1135
+ getJmsContext ().createTextMessage ("{ \" i\" : 0 }" ) // Valid message
1136
+ );
1137
+ putAllMessagesToQueue (DEFAULT_SOURCE_QUEUE , testMessages );
1138
+
1139
+ final List <SourceRecord > processedRecords = connectTask .poll ();
1140
+
1141
+ assertThat (processedRecords ).hasSize (2 );
1142
+
1143
+ final SourceRecord dlqRecord = processedRecords .get (0 );
1144
+ assertThat (dlqRecord .topic ()).isEqualTo ("__dlq.mq.source" );
1145
+
1146
+ final Headers headers = dlqRecord .headers ();
1147
+
1148
+ // Actual headers
1149
+ assertThat (headers .lastWithName ("teststring" ).value ()).isEqualTo ("myvalue" );
1150
+ assertThat (headers .lastWithName ("volume" ).value ()).isEqualTo ("11" );
1151
+ assertThat (headers .lastWithName ("decimalmeaning" ).value ()).isEqualTo ("42.0" );
1152
+
1153
+ assertThat (headers .lastWithName ("__connect.errors.topic" )).isNull ();
1154
+ assertThat (headers .lastWithName ("__connect.errors.class.name" )).isNull ();
1155
+ assertThat (headers .lastWithName ("__connect.errors.exception.message" )).isNull ();
1156
+ assertThat (headers .lastWithName ("__connect.errors.timestamp" )).isNull ();
1157
+ assertThat (headers .lastWithName ("__connect.errors.cause.message" )).isNull ();
1158
+ assertThat (headers .lastWithName ("__connect.errors.cause.class" )).isNull ();
1159
+ assertThat (headers .lastWithName ("__connect.errors.exception.stacktrace" )).isNull ();
1160
+ }
1161
+
1109
1162
@ Test
1110
1163
public void verifyLoggingWarningWithErrorTolerance () throws Exception {
1111
1164
connectTask = getSourceTaskWithEmptyKafkaOffset ();
0 commit comments