@@ -119,14 +119,14 @@ public EventBus send(String address, Object message) {
119119
120120 @ Override
121121 public EventBus send (String address , Object message , DeliveryOptions options ) {
122- MessageImpl msg = createMessage (true , address , options .getHeaders (), message , options .getCodecName ());
122+ MessageImpl msg = createMessage (true , isLocalOnly ( options ), address , options .getHeaders (), message , options .getCodecName ());
123123 sendOrPubInternal (msg , options , null );
124124 return this ;
125125 }
126126
127127 @ Override
128128 public <T > Future <Message <T >> request (String address , Object message , DeliveryOptions options ) {
129- MessageImpl msg = createMessage (true , address , options .getHeaders (), message , options .getCodecName ());
129+ MessageImpl msg = createMessage (true , isLocalOnly ( options ), address , options .getHeaders (), message , options .getCodecName ());
130130 ReplyHandler <T > handler = createReplyHandler (msg , true , options );
131131 sendOrPubInternal (msg , options , handler );
132132 return handler .result ();
@@ -165,15 +165,15 @@ public EventBus publish(String address, Object message) {
165165
166166 @ Override
167167 public EventBus publish (String address , Object message , DeliveryOptions options ) {
168- sendOrPubInternal (createMessage (false , address , options .getHeaders (), message , options .getCodecName ()), options , null );
168+ sendOrPubInternal (createMessage (false , isLocalOnly ( options ), address , options .getHeaders (), message , options .getCodecName ()), options , null );
169169 return this ;
170170 }
171171
172172 @ Override
173173 public <T > MessageConsumer <T > consumer (String address ) {
174174 checkStarted ();
175175 Objects .requireNonNull (address , "address" );
176- return new MessageConsumerImpl <>(vertx .getOrCreateContext (), this , address , false );
176+ return new MessageConsumerImpl <>(vertx .getOrCreateContext (), this , address , false );
177177 }
178178
179179 @ Override
@@ -188,7 +188,7 @@ public <T> MessageConsumer<T> consumer(String address, Handler<Message<T>> handl
188188 public <T > MessageConsumer <T > localConsumer (String address ) {
189189 checkStarted ();
190190 Objects .requireNonNull (address , "address" );
191- return new MessageConsumerImpl <>(vertx .getOrCreateContext (), this , address , true );
191+ return new MessageConsumerImpl <>(vertx .getOrCreateContext (), this , address , true );
192192 }
193193
194194 @ Override
@@ -253,9 +253,9 @@ public EventBusMetrics<?> getMetrics() {
253253 return metrics ;
254254 }
255255
256- public MessageImpl createMessage (boolean send , String address , MultiMap headers , Object body , String codecName ) {
256+ public MessageImpl createMessage (boolean send , boolean localOnly , String address , MultiMap headers , Object body , String codecName ) {
257257 Objects .requireNonNull (address , "no null address accepted" );
258- MessageCodec codec = codecManager .lookupCodec (body , codecName , true );
258+ MessageCodec codec = codecManager .lookupCodec (body , codecName , localOnly );
259259 @ SuppressWarnings ("unchecked" )
260260 MessageImpl msg = new MessageImpl (address , headers , body , codec , send , this );
261261 return msg ;
@@ -382,7 +382,7 @@ protected ReplyException deliverMessageLocally(MessageImpl msg) {
382382 if (metrics != null ) {
383383 metrics .messageReceived (msg .address (), !msg .isSend (), messageLocal , handlers .size ());
384384 }
385- for (HandlerHolder holder : handlers ) {
385+ for (HandlerHolder holder : handlers ) {
386386 if (messageLocal || !holder .isLocalOnly ()) {
387387 holder .handler .receive (msg .copyBeforeReceive ());
388388 }
@@ -412,8 +412,8 @@ protected String generateReplyAddress() {
412412 }
413413
414414 <T > ReplyHandler <T > createReplyHandler (MessageImpl message ,
415- boolean src ,
416- DeliveryOptions options ) {
415+ boolean src ,
416+ DeliveryOptions options ) {
417417 long timeout = options .getSendTimeout ();
418418 String replyAddress = generateReplyAddress ();
419419 message .setReplyAddress (replyAddress );
@@ -423,7 +423,7 @@ <T> ReplyHandler<T> createReplyHandler(MessageImpl message,
423423 }
424424
425425 public <T > OutboundDeliveryContext <T > newSendContext (MessageImpl message , DeliveryOptions options ,
426- ReplyHandler <T > handler ) {
426+ ReplyHandler <T > handler ) {
427427 return new OutboundDeliveryContext <>(vertx .getOrCreateContext (), message , options , handler );
428428 }
429429
@@ -435,7 +435,7 @@ public <T> void sendOrPubInternal(OutboundDeliveryContext<T> senderCtx) {
435435 }
436436
437437 public <T > Future <Void > sendOrPubInternal (MessageImpl message , DeliveryOptions options ,
438- ReplyHandler <T > handler ) {
438+ ReplyHandler <T > handler ) {
439439 checkStarted ();
440440 OutboundDeliveryContext <T > ctx = newSendContext (message , options , handler );
441441 sendOrPubInternal (ctx );
@@ -478,7 +478,7 @@ private void removeInterceptor(AtomicReferenceFieldUpdater<EventBusImpl, Handler
478478 while (true ) {
479479 Handler [] interceptors = updater .get (this );
480480 int idx = -1 ;
481- for (int i = 0 ;i < interceptors .length ;i ++) {
481+ for (int i = 0 ; i < interceptors .length ; i ++) {
482482 if (interceptors [i ].equals (interceptor )) {
483483 idx = i ;
484484 break ;
@@ -495,5 +495,12 @@ private void removeInterceptor(AtomicReferenceFieldUpdater<EventBusImpl, Handler
495495 }
496496 }
497497 }
498+
499+ private boolean isLocalOnly (DeliveryOptions options ) {
500+ if (vertx .isClustered ()) {
501+ return options .isLocalOnly ();
502+ }
503+ return true ;
504+ }
498505}
499506
0 commit comments