Skip to content

Unable to read BOOLEAN value from pulsar message #1103

Open
@Sonalit23

Description

@Sonalit23

Expected behavior

Sending pulsar message with value type Boolean (wrapper class) in java with RSA encryption enabled but unable to read it at consumer side with go client. correct boolean value should be received provided correct decryption keys.

Actual behavior

value is always empty and not sure what will be the right schema type for boolean value.

Steps to reproduce

Here I am writing producer in go (integration test) instead of JAVA.
producer code:

keyReader := crypto.NewFileKeyReader('PROVIDE PATH TO PUBLIC KEY', 'PROVIDE PATH TO PRIVATE KEY')
	producer, _ := client.CreateProducer(pulsar.ProducerOptions{
		Topic: "some-topic",
		Encryption: &pulsar.ProducerEncryptionInfo{
			KeyReader:                   keyReader,
			ProducerCryptoFailureAction: crypto.ProducerCryptoFailureActionFail,
			Keys:                        []string{"client-rsa.pem"},
		},
	})

	msgId, err := producer.Send(ctx, &pulsar.ProducerMessage{
		Key:   "abc-key",
		Value: true,
	})

Consumer code:

keyReader := crypto.NewFileKeyReader('PROVIDE PATH TO PUBLIC KEY', 'PROVIDE PATH TO PRIVATE KEY')
	options := pulsar.ConsumerOptions{
		Topic:            topic-name,
		Type:             pulsar.Shared,
		MessageChannel:              channel,
		SubscriptionInitialPosition: pulsar.SubscriptionPositionEarliest,
		Decryption: &pulsar.MessageDecryptionInfo{
			KeyReader:                   keyReader,
			ConsumerCryptoFailureAction: crypto.ConsumerCryptoFailureActionFail,
		},
	}

How to use schematype for BOOLEAN value? I checked the https://github.com/apache/pulsar-client-go/blob/master/pulsar/schema.go but it is unclear for boolean value. any help would be appreciated.

Workaround/solution: Currently I am reading payload directly, checking if it is not nil and then converting it to bool.

payload := msg.Payload()
if payload != nil {
value := payload[0] != 0
}

System configuration

Pulsar version: 3.0.x

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions