Go-generated protobufs with map[string]interface{}

I’m trying to extend argo events to support the quorum queues of RabbitMQ: argoproj/argo-events - Issue 1479 - Allow AMQP arguments in AMQPQueueDeclare instead of always passing nil (Enables Quorum Queues and other functionality)

This should be a fairly simple change. The pika library in Python can already send optional arguments which send as a dict to Argo. These optional arguments are used for plugins and optional features in RabbitMQ, and the eventsource code for amqp channels already have a parameter for a Table for “arguments” in the QueueDeclare method but it’s always nil (my max links allowed was reached for new users, but it’s argoproj/argo-events and eventsources/sources/amqp/start.go#L257). This Table is a map[string]interface{} and adding it to the types file would add an import to streadway/amqp (on github, but I can only link 2 things as a new user) which looks out of place here as I don’t think that type was meant to be a serialization format.

I’m not terribly familiar with protobufs besides the overall concept and I’ve read through the basics. I made a “question” PR to discuss the type. I tried to use Arguments []byte json:“arguments,omitempty” protobuf:“bytes,6,rep,name=arguments”``, and then in the actual AMQP code start.go I serialize the bytes into Table, where is makes much more sense to have a plugin-specific import.

Is there a better type I can use for this unstructured JSON in the protobuf definition?

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.