java-sdk
java-sdk copied to clipboard
How to specify type with metadata of pubsub?
The CloudEvent spec says we can specify the type in the metadata. The SDK allows metadata customization when publishing an event as below
Map<String, String> metadata = new HashMap<>();
metadata.put("type", "com.test.user.created");
Mono<Void> result = client.publishEvent("pubsub", "inbox", payload, metadata);
result.block(Duration.ofSeconds(2));
But the type seems always be com.dapr.event.sent. I debug into the gRPC code down to protocol bufferserializeStringMapTo and I am pretty sure the type is correctly written to the sidecar via 50001.
Are there anything wrong here? And can I specify other metadata like metadata.rawPayload?
If I do a POST with curl, this works
curl -X POST http://myurl... -d {"specversion" : "1.0", "type" : "com.mytest", "source" : "testcloudeventspubsub", "subject" : "Cloud Events Test", "id" : "111111", "time" : "2021-08-02T09:00:00Z", "datacontenttype" : "application/cloudevents+json", "data" : {"orderId": "100"}}
So I guess this problem only occurs in gRPC. However, the SDK does not support HTTP for pub/sub, right?
SDK has metadata.CONTENT_TYPE to customize the type. https://github.com/dapr/java-sdk/blob/master/sdk/src/main/java/io/dapr/client/domain/Metadata.java
SDK has metadata.CONTENT_TYPE to customize the type. https://github.com/dapr/java-sdk/blob/master/sdk/src/main/java/io/dapr/client/domain/Metadata.java
Thanks, @tanvigour , but I am not saying the media type in "content-type" or "datacontenttype", I am saying the "type" context attribute in CloudEvent spec. e.g, "user.created".
And it seems I cannot set extension context attributes (custom metadata), but the CloudSpec allows.