我正在创建一个新的图像,将base作为rabbitmq并尝试创建队列,交换一旦服务器启动就会反映在localhost url上。我能够在rabbitmq容器中手动创建队列。但我想通过dockerfile或entrypoint.sh来实现这一点。我想要一旦rabbitmq服务器启动就可以使用交换,队列。请建议任何方式来实现它。任何示例都会有所帮助。
答案 0 :(得分:0)
Rabbitmq有Management HTTP API。您可以使用此api与rabbitmq进行交互。
您可以通过向http://localhost:15672/api/queues/${vhost}/${name}
发送POST请求来创建交换。同样,您可以通过创建队列
对curl
进行POST。
您可以在入口点脚本中使用private void WmNcCalcSize(ref Message m)
{
if (m.WParam != IntPtr.Zero)
{
Win32.NCCALCSIZE_PARAMS rcsize = (Win32.NCCALCSIZE_PARAMS)Marshal.PtrToStructure(m.LParam, typeof(Win32.NCCALCSIZE_PARAMS));
AdjustClientRect(ref rcsize.rcNewWindow);
Marshal.StructureToPtr(rcsize, m.LParam, false);
}
else
{
Win32.RECT rcsize = (Win32.RECT)Marshal.PtrToStructure(m.LParam, typeof(Win32.RECT));
AdjustClientRect(ref rcsize);
Marshal.StructureToPtr(rcsize, m.LParam, false);
}
m.Result = (IntPtr)1;
}
private void AdjustClientRect(ref Win32.RECT rcClient)
{
if (this.WindowState == FormWindowState.Maximized)
{
rcClient.top += this.CaptionHeight + Math.Abs(this.Top) - 1;
rcClient.left = 0;
rcClient.right = Screen.PrimaryScreen.Bounds.Right;
rcClient.bottom -= 1;
}
else
{
rcClient.top += this.CaptionHeight;
rcClient.left += 1;
rcClient.right -= 1;
rcClient.bottom -= 1;
}
}
来调用它们。
答案 1 :(得分:0)
您可以像这样使用HareDu 2:
var result = _container.Resolve<IBrokerObjectFactory>()
.Object<Queue>()
.Create(x =>
{
x.Queue("fake_queue");
x.Configure(c =>
{
c.IsDurable();
c.AutoDeleteWhenNotInUse();
c.HasArguments(arg =>
{
arg.SetQueueExpiration(1000);
arg.SetPerQueuedMessageExpiration(2000);
});
});
x.Targeting(t =>
{
t.VirtualHost("HareDu");
t.Node("Node1");
});
});