windows server 2003 64bit SP2下安装RabbitMQ

一、背景

近期做一个小的基础组件,主要作用是异步消息通知、缓存维护、以及耗时任务处理。

当中消息通知和耗时任务处理要用到开源的RabbitMQ作为消息中心server。

可是有一点比較恶心,我这个组件是要执行在现有的系统中,即要给现有的系统升级,将我这个组件用进去,并且,除了除数据库server之外,全部server都是windows server 2003 enterprise edition sp2 64bit的。你没看错,就是这么古老的机器。。。

二、面临的问题

之前在windows server 2008和centOS上安装RabbitMQ都很顺利。没有遇到不论什么阻碍,这次在windows server 2003上面安装就遇到了问题:

1、首先安装ErLang的时候,没有出现不论什么问题,我装的是OTP
17.3 Windows 64-bit
,地址是:http://www.erlang.org/download.html

2、安装RabbitMQ 最新版3.3.5的时候出问题了。即无法定位程序输入点inet_pton于动态链接库WS2_32.dll上。例如以下图:

报出了一个和网络地址转换相关的错误。。。这让我想不到。

三、寻找答案的过程和思考

于是開始上网找,中文网页压根没人在windows server 2003上面安装过RabbitMQ,在非常多qq群问了也无果。

于是開始搜索英文网页。找到这么一个网址:http://comments.gmane.org/gmane.comp.networking.rabbitmq.general/16499

这两人的对话给我非常多关键性信息。最关键的莫过于:

From the information you provided it is likely that this is caused by
the Erlang distributed networking not working on windows 2003 64bit.
This platform is sufficiently rare that no-one else has reported this
problem for Erlang, but I see there was a similar report in Wireshark
caused by a library ordering problem:

https://bugs.wireshark.org/bugzilla/show_bug.cgi?

id=5160#c16

If you can find the shortest set of steps that provokes the error then
that should be enough to give the Erlang developers a handle on the
problem. I would expect these commands to cause a failure - can you
confirm? Make sure the Erlang bin directory is in your PATH:

werl -sname testnode <at> %COMPUTERNAME%
werl -sname foo -remsh testnode <at> %COMPUTERNAME%

If you need a working RabbitMQ broker in the meantime then consider
installing the 32bit version of Erlang. I not expect it to suffer from
the same problem.

看来应该就是Erlang的问题了,RabbitMQ号称仅仅要ErLang可以跑的系统,它也可以非常好滴工作^_^ !

ErLang的开发人员预计也知道这个问题了,这么几年下来到如今最新版17.3了还没有改动。预计他们也不会打算要修复这个Bug了。连微软都停止支持windows server 2003了。

于是我又一次下载了一个R16B03 Windows
32-bit Binary

吧之前安装的RabbitMQ和Erlang所有卸载掉,然后又一次安装ErLang和RabbitMQ,这次在安装RabbitMQ的时候又遇到问题了:

这下让我有点头痛了,难道我仅仅剩下最后一条能够尝试的路了?就是 在这个windows server 2003上面又一次编译Erlang源代码么。。。

我静下来想了想,突然认为这个错误报的是无法注冊RabbitMQ 服务。。。 我晕,下次应该好好观察一下报的错误,这个明显就是RabbitMQ注冊服务的问题嘛。

。应该是和ErLang无关的。

。。

可能是卸载RabbitMQ并没有卸载干净服务和注冊表。

于是我直接把我的系统还原到之前干净的镜像,又一次安装。OK。!!

四、解决方法

1、安装ErLang 32-bit。下载地址是:http://www.erlang.org/download_release/22,我安装的是16B03 32bit。

2、新建系统环境变量ERLANG_HOME。值为C:\Program Files (x86)\erl5.10.4,即仅仅要可以找到bin/werl.exe就可以。

3、安装RabbitMQ 3.3.5。下载地址是:https://www.rabbitmq.com/install-windows.html

4、添加rabbitmqctl.bat的路径(C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin)到PATH系统环境变量。

非常easy,这就安装完毕了,接下来新建用户(最好将默认的guest用户删掉)。新建虚拟机vHost,设置用户对该虚拟机的权限:

好了。以下附上一个C#的測试程序:

send.cs

namespace RabbitMQ.SendReceive
{
    class Program
    {
        static void Main(string[] args)
        {
            //ConnectionFactory factory = new ConnectionFactory() { HostName = "192.168.1.103" };
            ConnectionFactory factory = new ConnectionFactory();
            factory.Uri = "amqp://jiyiqin:[email protected]:5672/cProxy";
            using (IConnection conn = factory.CreateConnection())
            {
                using (IModel channel = conn.CreateModel())
                {
                    channel.QueueDeclare("hello", false, false, false, null);

                    string mesg = "hello RabbitMQ";
                    byte[] body = Encoding.UTF8.GetBytes(mesg);

                    channel.BasicPublish("", "hello", null, body);
                    Console.WriteLine(" [x] Sent {0}", mesg);
                }
            }
        }
    }
}

receive.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;

namespace RabbitMQ.SendReceive
{
    class Program
    {
        static void Main(string[] args)
        {
            //ConnectionFactory factory = new ConnectionFactory() { HostName = "192.168.1.103" };
            ConnectionFactory factory = new ConnectionFactory();
            factory.Uri = "amqp://jiyiqin:[email protected]:5672/cProxy";

            using (IConnection conn = factory.CreateConnection())
            {
                using (IModel channel = conn.CreateModel())
                {
                    channel.QueueDeclare("hello", false, false, false, null);

                    QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);
                    channel.BasicConsume("hello", true, consumer);
                    Console.WriteLine(" [*]Waiting for message...");

                    while (true)
                    {
                        var queueItem = (BasicDeliverEventArgs)consumer.Queue.Dequeue();

                        byte[] body = queueItem.Body;
                        string mesg = Encoding.UTF8.GetString(body);
                        Console.WriteLine(" [x] Received {0}", mesg);
                    }
                }
            }
        }
    }
}

当然了,64bit的硬件上面跑32bit的程序。肯定无法发挥硬件效果。可能性能也不是很高。可是幸好我们这个古老的系统对并发量等要求太小。哈哈

结束。

时间: 2024-10-25 04:01:56

windows server 2003 64bit SP2下安装RabbitMQ的相关文章

Windows Server 2003 R2 SP2 x64 序列号

此序列号已经测试过可以用于Windows Server 2003 R2 SP2 X64企业版使用,但32位的不能使用 BXJ7B-XJ4RP-YYPCX-RXP2K-TKTBB 32位的可以用JCGMJ-TC669-KCBG7-HB8X2-FXG7M这个序列号 谢谢!

windows server 2003在vm上安装图解

1.在vm上的操作 2.加载镜像后正式安装windows server 2003阶段 至此,windows server 2003 安装完毕

在Windows Server 2016 Core模式下安装Windows Admin Center

之前给大家介绍了Windows Admin Center的功能和界面:http://blog.51cto.com/rdsrv/2103443 但安装Windows Admin Center是基于Windows Server 2016的图形化GUI安装的Windows Admin Center的,今天我主要给大家介绍在Windows Server 2016 Core模式下(没有GUI)安装Windows Admin Center,为什么要单独介绍在Core模式下安装Windows Admin Ce

Windows Server 2008 R2虚拟机下安装 Oracle RAC 详解(grid)

一.准备工作 1.下载grid和Oracle. 2.两台虚拟机. 3.为两台虚拟机分配7个IP地址,后面会详细说明.其中2个用于对外访问(本文采用10.1.1.110和10.1.1.111),2个作为映射IP(与前两个IP同一网段)(本文采用10.1.1.112和10.1.1.113),两个用于两台虚拟机之间做心跳(本文采用192.168.1.1和192.168.1.2),一个作为scan-cluster(本文采用10.1.1.114). 4.存储:本文采用外挂存储的形式,分配成5部分,其中oc

weblogic10.3.6 在windows server 2008 R2 x64下安装

开发同事要求部署一套weblogic环境,用于生产环境CRM迁移,于是记录下这个安装过程 具体见下面附件

vpn连接后,远程桌面连接不上的解决办法——Windows Server 2003/2008/2012下添加永久静态路由

最近,公司有人反映拨入VPN后,不能通过远程桌面连接内网机器. 首先确定权限是开通过的. 后又分析了下,有可能是路由问题.由于给vpn客户端分配的地址段为10.10.21.0/24.而内网机器所在网段为10.10.10.0. 10.10.11.0. 10.10.12.0,随后分别在远程主机上添加对应的静态路由: 网络地址      子网掩码    内网网关地址 route -p add 10.10.21.0 mask 255.255.255.0 10.10.10.1 route -p add 1

Windows Server 2003搭建邮件服务器

由于Windows Server 2003默认是没有安装我们搭建邮件服务器所需要的POP3和SMTP服务的,因此需要我们自己来安装.方法如下: 1. 将Windows Server 2003的系统光盘放入光驱,或者将镜像文件挂载到虚拟光驱.在控制面板中点击“添加或删除程序”,在“添加或删除程序”对话框中,点击“添加/删除Windows组件”.Hn 2. 在“Windows组件向导”中,需要进行如下操作: ① 安装POP3服务. 选中“电子邮件服务”,双击打开,会看到它包括“POP3服务”和“PO

Windows Server 2003升级之环境准备

Windows Server 2003 的扩展支持已于 2015 年 7 月 14 日中止!这对您意味着什么?Microsoft 将不再发布针对任何版本的 Windows Server 2003 的安全更新.如果您当前仍在数据中心中运行 Windows Server 2003,则需要立即采取措施来规划和实施迁移策略以保护您的基础结构. 在微软停止Windows Server 2003的扩展支持的情况下,企业选择升级高版本的Server势在必行,特在此推出Windows Server 2003升级

Windows server 2003常用设置

1.禁用配置服务器向导   由于不需要服务器设置功能,首先我们先禁止“配置你的服务器”(Manage   Your   Server)向导的出现,你可以在控制面板(Control   Panel)   ->   管理员工具(Administrative   Tools   )->   管理你的服务器(Manage   Your   Server)运行它,然后在窗口的左下角复选“登录时不要显示该页”(Don 't   display   this   page   at   logon). 2.