module amqp_.bind; import std.stdio; import std.string; import std.conv:to; import std.exception; import kaleidic.api.rabbitmq; import kaleidic.api.rabbitmq.utils; int main(string[] args) { if (args.length < 6) { stderr.writefln("Usage: amqp_bind host port exchange bindingkey queue\n"); return 1; } auto hostname = args[1]; auto port=args[2].to!ushort; auto exchange = args[3]; auto bindingKey = args[4]; auto queue = args[5]; amqp_connection_state_t conn = amqp_new_connection(); amqp_socket_t* socket = amqp_tcp_socket_new(conn); enforce(socket !is null, "error creating TCP socket"); auto status = amqp_socket_open(socket, hostname.toStringz, port); enforce(status,"error opening TCP socket"); die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, SaslMethod.plain, "guest".toStringz, "guest".toStringz), "Logging in"); amqp_channel_open(conn, 1); die_on_amqp_error(amqp_get_rpc_reply(conn), "Opening channel"); amqp_queue_bind(conn, 1.to!ushort, amqp_cstring_bytes(queue.toStringz), amqp_cstring_bytes(exchange.toStringz), amqp_cstring_bytes(bindingKey.toStringz), cast(amqp_table_t)amqp_empty_table); die_on_amqp_error(amqp_get_rpc_reply(conn), "Unbinding"); die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); die_on_error(amqp_destroy_connection(conn), "Ending connection"); return 0; }