Skip to content

Commit 8f6930e

Browse files
committed
Add exception to publish confirm context
The exception field is populated only in case of client errors. The status is "rejected" for these cases. Fixes #154
1 parent ee3b351 commit 8f6930e

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

src/main/java/com/rabbitmq/client/amqp/Consumer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ interface Context {
153153
* the messages.
154154
*
155155
* <p>Only "simple" (not batch) message contexts can be added to a batch context. Calling {@link
156-
* Context#batch()} on a batch context returns the instance itself.
156+
* Context#batch(int)} on a batch context returns the instance itself.
157157
*
158158
* @see <a
159159
* href="https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#type-disposition">AMQP

src/main/java/com/rabbitmq/client/amqp/Publisher.java

+7
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ interface Context {
9292
* @see <a href="https://www.rabbitmq.com/docs/amqp#outcomes">AMQP Outcomes</a>
9393
*/
9494
Status status();
95+
96+
/**
97+
* Failure cause (null, unless for some cases of {@link Status#REJECTED}).
98+
*
99+
* @return failure cause, null if no cause for failure
100+
*/
101+
Throwable failureCause();
95102
}
96103

97104
/**

src/main/java/com/rabbitmq/client/amqp/impl/AmqpPublisher.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public void publish(Message message, Callback callback) {
131131
} else {
132132
status = Status.REJECTED;
133133
}
134-
DefaultContext defaultContext = new DefaultContext(message, status);
134+
DefaultContext defaultContext = new DefaultContext(message, status, ex);
135135
this.metricsCollector.publishDisposition(mapToPublishDisposition(status));
136136
callback.handle(defaultContext);
137137
return null;
@@ -227,10 +227,12 @@ private static class DefaultContext implements Publisher.Context {
227227

228228
private final Message message;
229229
private final Status status;
230+
private final Throwable failureCause;
230231

231-
private DefaultContext(Message message, Status status) {
232+
private DefaultContext(Message message, Status status, Throwable failureCause) {
232233
this.message = message;
233234
this.status = status;
235+
this.failureCause = failureCause;
234236
}
235237

236238
@Override
@@ -242,6 +244,11 @@ public Message message() {
242244
public Status status() {
243245
return this.status;
244246
}
247+
248+
@Override
249+
public Throwable failureCause() {
250+
return this.failureCause;
251+
}
245252
}
246253

247254
Long id() {

0 commit comments

Comments
 (0)