GCP发布/订阅:如何在PublishCallbackListener的onFailure()中获取事件详细信息

时间:2019-10-31 11:36:28

标签: google-cloud-platform spring-cloud

如果要将事件发布到Pub / Sub失败,我们希望使用故障回复机制。我正在使用“ ListenableFutureCallback”来了解是否成功发布了消息。万一失败,它只是引发异常,我需要事件详细信息才能将其发布到内部消息传递服务。如何在onFailure()方法中获取事件详细信息。 我正在使用Spring Integration。 下面是一段代码。

监听器:

@Component
public class PubSubOperationListener implements ListenableFutureCallback<String> {

    private static Logger LOGGER = LoggerFactory.getLogger(PubSubOperationListener.class);

    @Override
    public void onFailure(Throwable throwable) {
    LOGGER.error("Failed to publish the message and details : {}",throwable);
    // Logic to process it using different approach.
    }

    @Override
    public void onSuccess(String s) {
        LOGGER.info("Message published successfully.");
    }

ServiceActivator:

        PubSubMessageHandler pubSubMessageHandler = new PubSubMessageHandler(pubSubTemplate, testTopic);
        pubSubMessageHandler.setPublishCallback(pubSubOperationListener);
        return pubSubMessageHandler;

请提出是否有不同的方法来做同样的事情。

1 个答案:

答案 0 :(得分:1)

当前,这是不可能的,因为Spring Cloud GCP只是委托给客户端库中的Pub / Sub Publisher

但是,当我们将发布者提供的Future封装在Spring Cloud GCP中时,我们可能会在其中包含原始消息和其他元数据。这将是一项功能请求,应提交here