[rabbitmq-discuss] Issue in sending binary data using amqp_basic_publish API.

Alan Antonuk alan.antonuk at gmail.com
Tue Nov 19 05:49:36 GMT 2013


Nothing obvious stands out.

What kind of crash are you getting? Run it under a debugger and see where
it crashes?

-Alan




On Mon, Nov 18, 2013 at 1:50 PM, Kiran Kumar <kirankumar.pnm at gmail.com>wrote:

> I have a rabbitmq server running on my debian linux machine. I have a BGP
> process running and it prepared a Route Message using google protocol
> buffers. The protocol buffer returns a binary data buffer.
>
> Then I have below code to send this data to rabbitmq server. When I
> execute this, the process crashes on amqp_basic_publish call.
>
> Any thoughts on this ? Am I missing some thing here ?
>
>
> int bgp_mq_send(char const* rt_msg, int size)
> {
>     static int init_done = 0;
>     int status;
>     amqp_socket_t *socket = NULL;
>     amqp_connection_state_t conn = NULL;
>     amqp_rpc_reply_t reply;
>
>     if (init_done == 0) {
>         conn = amqp_new_connection();
>
>         socket = amqp_tcp_socket_new(conn);
>         if (!socket) {
>             printf("\n socket creation failed\n");
>             return 1;
>         }
>
>         status = amqp_socket_open(socket, "localhost", 5672);
>         if (status) {
>             printf("\n socket open failed\n");
>             return 1;
>         }
>
>         reply = amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN,
> "guest", "guest");
>         if (reply.reply_type) {
>             printf("\n Login is failed\n");
>         }
>
>         amqp_channel_open(conn, 1);
>         reply = amqp_get_rpc_reply(conn);
>         if (reply.reply_type) {
>             printf("\n get_reply failed\n");
>         }
>         init_done = 1;
>     }
>
>
>     {
>         amqp_basic_properties_t props;
>         props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG |
> AMQP_BASIC_DELIVERY_MODE_FLAG;
>         props.content_type = amqp_cstring_bytes("gpb");
>         props.content_encoding = amqp_cstring_bytes("binary");
>         props.delivery_mode = 2; /* persistent delivery mode */
>
>         amqp_bytes_t str2;
>         str2.len = size;
>         str2.bytes = rt_msg;
>
>         status = amqp_basic_publish(conn, 1,
> amqp_cstring_bytes("amq.fanout"),
>                         amqp_cstring_bytes("#"), 0, 0,
>                         &props, str2);  *<<<----------- It crashes right
> here.*
>
>         if (status < 0) {
>             printf("\n publish failed\n");
>         }
>         printf("\n Publish success\n");
>     }
>     reply = amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS);
>     if (reply.reply_type) {
>         printf("\n chan close failed\n");
>     }
>     reply = amqp_connection_close(conn, AMQP_REPLY_SUCCESS);
>     if (reply.reply_type) {
>         printf("\n conn close failed\n");
>     }
>     status = amqp_destroy_connection(conn);
>     if (status < 0) {
>         printf("\n Destroy failed\n");
>     }
>     printf("\n All Done\n");
>     return 0;
> }
>
> any help in moving forward would be great.
>
> Thanks,
> Kiran.
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20131118/0c78209c/attachment.htm>


More information about the rabbitmq-discuss mailing list