Giriş
@Output anotasyonu yerine StreamBridge sınıfı da kullanılabilir.Örnek
Şeklen şöyle
application.yaml şöyle olsun
spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
  cloud:
    stream:
      bindings:
        orderSubmissionOutput:
          destination: orderSubmitted.exchangepublic interface MessageChannels {
  static final String ORDER_SUBMISSION_OUTPUT = "orderSubmissionOutput";
  @Output (ORDER_SUBMISSION_OUTPUT)
  MessageChannel orderSubmissionChannel();
}
@MessagingGateway
public interface OrderSubmissionGateway {
  @Gateway(requestChannel = MessageChannels.ORDER_SUBMISSION_OUTPUT)
  void submitOrder(Order order);
}
@RestController
@RequestMapping("/orders")
public class OrderRestController {
  @Autowired
  private OrderSubmissionGateway orderSubmissionGateway;
  @PostMapping()
  public ResponseEntity<Order> submitOrder(@RequestBody @Valid Order order) {
    Order orderToBeSubmitted = order.withSubmissionDate(Instant.now());
    orderSubmissionGateway.submitOrder(orderToBeSubmitted);
    return ResponseEntity.ok(orderToBeSubmitted);
  }
}Örnek - Producer
Şöyle yaparız. Burada @Output ile Source arayüzünün output isimli topic'e bir şey yazacağını belirtiriz.
application.properties şöyledirpublic interface Source {String OUTPUT = "output";@Output(Source.OUTPUT)MessageChannel output();}
Kullanmak için şöyle yaparızcloud.stream:bindings.input:destination: payment-approval-topicgroup: payment-service-consumerbindings.output:destination: payment-notification-topiccontentType: application/json
Örnek - Processor@EnableBinding({Source.class})public class SubscriptionRequestsProducer {private final Source source;public SubscriptionRequestsProducer(Source source) {this.source = source;}public void requestApproval(Map<String, Object> subscriptionRequest) {source.output().send(MessageBuilder.withPayload(subscriptionRequest).build());}}
Şöyle yaparız
public interface MyProcessor {String INPUT = "myInput";@InputSubscribableChannel myInput();@Output("myOutput")MessageChannel anOutput();@OutputMessageChannel anotherOutput();}

 
Hiç yorum yok:
Yorum Gönder