Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support async send msg return sequenceId when throw Exception #6825

Conversation

liudezhi2098
Copy link
Contributor

Master Issue: #6824

Motivation

When sending messages asynchronously fails, an exception will be thrown, but it is not known which message is abnormal, and the user does not know which messages need to be retried。

Modifications

This change can be supported on the client side, when throwing an exception need to set sequenceId
org.apache.pulsar.client.api.PulsarClientException

public class PulsarClientException extends IOException {
    private long sequenceId = -1;

    public PulsarClientException(String msg, long sequenceId) {
        super(msg);
        this.sequenceId = sequenceId;
    }

Client examples

  producer.newMessage().sequenceId(1).value(value.getBytes())
                .sendAsync().thenAccept(msgId -> {
                    System.out.println(msgId);
                }).exceptionally(ex -> {
                    System.out.println( ((PulsarClientException)ex.getCause()).getSequenceId());
                    return null;
                });

@sijie sijie added this to the 2.6.0 milestone Apr 29, 2020
@sijie sijie added area/client type/enhancement The enhancements for the existing features or docs. e.g. reduce memory usage of the delayed messages labels Apr 29, 2020
@sijie
Copy link
Member

sijie commented Apr 29, 2020

/pulsarbot run-failure-checks

@codelipenghui codelipenghui merged commit 42ed9bf into apache:master Apr 30, 2020
Huanli-Meng pushed a commit to Huanli-Meng/pulsar that referenced this pull request May 27, 2020
…#6825)

Master Issue: apache#6824
## Motivation

When sending messages asynchronously fails, an exception will be thrown, but it is not known which message is abnormal, and the user does not know which messages need to be retried。

## Modifications

This change can be supported on the client side,   when throwing an exception need to set sequenceId
org.apache.pulsar.client.api.PulsarClientException


```java
public class PulsarClientException extends IOException {
    private long sequenceId = -1;

    public PulsarClientException(String msg, long sequenceId) {
        super(msg);
        this.sequenceId = sequenceId;
    }
```
Client examples
```java
  producer.newMessage().sequenceId(1).value(value.getBytes())
                .sendAsync().thenAccept(msgId -> {
                    System.out.println(msgId);
                }).exceptionally(ex -> {
                    System.out.println( ((PulsarClientException)ex.getCause()).getSequenceId());
                    return null;
                });
```
huangdx0726 pushed a commit to huangdx0726/pulsar that referenced this pull request Aug 24, 2020
…#6825)

Master Issue: apache#6824
## Motivation

When sending messages asynchronously fails, an exception will be thrown, but it is not known which message is abnormal, and the user does not know which messages need to be retried。

## Modifications

This change can be supported on the client side,   when throwing an exception need to set sequenceId
org.apache.pulsar.client.api.PulsarClientException


```java
public class PulsarClientException extends IOException {
    private long sequenceId = -1;

    public PulsarClientException(String msg, long sequenceId) {
        super(msg);
        this.sequenceId = sequenceId;
    }
```
Client examples
```java
  producer.newMessage().sequenceId(1).value(value.getBytes())
                .sendAsync().thenAccept(msgId -> {
                    System.out.println(msgId);
                }).exceptionally(ex -> {
                    System.out.println( ((PulsarClientException)ex.getCause()).getSequenceId());
                    return null;
                });
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/client type/enhancement The enhancements for the existing features or docs. e.g. reduce memory usage of the delayed messages
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants