Alternative to MSMQ for windows server core - msmq

I have a program that writes to a local MSMQ, and a customer that wants to install that program on Windows Server Core 2012, which I have just discovered does not support MSMQ.
Are there any alternative queueing technologies that will work on Windows Server Core 2012?

I've just checked a Windows 2012 R2 Core server and MSMQ was fully available:
Get-WindowsFeature -Name MSMQ*
[ ] Message Queuing MSMQ Available
[ ] Services Message Queuing MSMQ-Services Available
[ ] Serveur Message Queuing MSMQ-Server Available
[ ] Déclencheurs Message Queuing MSMQ-Triggers Available
[ ] Intégration du service d’annuaire MSMQ-Directory Available
[ ] Prise en charge de la multidiffusion MSMQ-Multicasting Removed
[ ] Prise en charge HTTP MSMQ-HTTP-Support Available
[ ] Service de routage MSMQ-Routing Available
[ ] Proxy DCOM Message Queuing MSMQ-DCOM Available
So I believe the data you've found of it not being available date back to Server 2008. (or it may be a difference between 2012 and 2012 R2 - unlikely, but in that case your solution is simple: upgrade!)
If you still want alternatives... well, in any way you'll have to change your code, as there are no other brokers that implement the MSMQ APIs. So either use a remote MSMQ, or change your broker altogether. For example, I can vouch for RabbbitMQ working on 2008R2 et 2012R2 server core. But it is just an example, and you will have to do a lot of refactoring to change the API.

Related

OMS to patch Non azure VM

I have servers on Azure and I am using OMS to patch the servers, which is working fine. How ever there are many servers which are non azure like Laptops, Is it possible to patch the Non-Azure VMs from OMS?
Could you please help?
Is it possible to patch the Non-Azure VMs from OMS?
Yes, it is possible. You need install OMS agent on your local VMs.
However, if you want to use Update management, there are some prerequisites that you need to be satisfied. You could refer to this link.
1.The solution supports performing update assessments against Windows
Server 2008 and higher, and update deployments against Windows Server
2012 and higher. Server Core and Nano Server installation options are
not supported.
2.Windows client operating systems are not supported.
3.Windows agents must either be configured to communicate with a Windows
Server Update Services (WSUS) server or have access to Microsoft
Update.
More information about connect Windows computers to OMS please refer to this link.

BizTalk Server - Can't configure Groups

I am trying to configure BizTalk Server 2010 along with SQL Server 2008 R2 with SP3. I am able to configure Enterprise SSO and Business Rules Engine, but I cannot configure Groups. When configuring Enterprise SSO, it is able to successfully create the SSO Database along with their respective accounts (SSO Administrators and SSO Affiliate Administrators). But for Groups, it is only able to create the Administrative Roles (BizTalk Administrators Group, Operators Group, and B2B Operators Group). It fails when trying to create the Databases (BizTalkMgmtDb, BizTalkMsgBoxDb, BizTalkDTADb).
Here are a few errors I am getting from the log file:
2015-06-09 07:50:23:4123 [Info] CfgExtHelper Checking the connection
to the BizTalk Management Database: BizTalkMgmtDb on server *****
2015-06-09 07:50:23:4748 [Info] CfgExtHelper The BAM Primary Import
Database found from the BizTalk Management Database BizTalkMgmtDb on
server ***** is not compatible.
2015-06-09 07:50:23:4748 [Info] CfgExtHelper Connecting to the BAM
Primary Import Table Database BAMPrimaryImport on server *****
2015-06-09 07:50:23:4905 [Info] CfgExtHelper The BAM Primary Import
Database found from the BizTalk Management Database BAMPrimaryImport
on server ***** is not compatible.
BizTalk 2010 won't work with SQL 2013, which you have installed on your server. What seems to be happening is that BizTalk is connecting to the server, and the default instance is likely running on SQL 2013 (hence the message "Database x on server y is not compatible"). You have to configure BizTalk to connect to the correct instance, or set the default instance to be the SQL 2008R2 instance.
An ideal fix would be to remove SQL 2013 from the server. BizTalk makes very heavy usage of MessageBox and Management databases, and best practice is to have it on its own dedicated server (or servers).
If any way possible, the best way to setup for BizTalk Dev is VM with the entire stack, Windows Server, SQL Server, Visual Studio and BizTalk Server, all installed locally.

Copy messages in messagequeues from Windows Server 2003 to Windows Server 2012

We are migrating from Windows Server 2003 to Windows Server 2012. There are messages in private messagequeues on Windows Server 2003 that we need to move to Windows Server 2012. It's a one-time task.
The following 3 steps corrupted messagequeues on server 2012, and I had to uninstall and reinstall Message Queuing on Server 2012.
mqbkup -b c:\msmq_backup -y (on 2003)
Copy c:\msmq_backup from 2003 to 2012.
mqbkup -r c:\msmq_backup -y (on 2012)
http://technet.microsoft.com/en-us/library/cc773213%28v=ws.10%29.aspx
http://technet.microsoft.com/en-us/library/hh875586.aspx
I access these messagequeues and messages from .NET console and ASP.NET applications using System.Messaging Namespace.
http://msdn.microsoft.com/en-us/library/system.messaging%28v=vs.110%29.aspx
Any ideas would be appreciated. Thank you.
MQBKUP is not for moving to upgraded systems as it restores the old MSMQ configuration which, as you've found, won't necessarily be compatible.
If the computername is the same, you could try straight copying the LQS and Storage folders. On startup, MSMQ checks the address in the messages. If the address matches the local computername, the message will be loaded, otherwise discarded.
Of course, this assumes the MQ file format is the same in 2012 and, unfortunately, I haven't had a chance to look.

transport-level error has occurred when receiving results from the server(provider:TCP Provider, error: 0-The semaphore timeout period has expired)

We have an application server with the following spec’s:
• Windows 2008 R2 operating system.
• All prerequisites are configures successfully and correctly: Windows roles, MSDTC and connection to SQL DB server.
• MS Reporting Services 2008 R2 are installed and configured successfully, and all reports are deployed and render with no problems.
The application server connects to SQL Server 2008 R2 DB on different server - there are no firewalls between the 2 servers , and using UDL file, the connection is always successful using windows authentication or SQL authentication on SQL Server.
When we install “K2 blackpearl 4.5 (4.10060.1.0) with Update KB001040”, the setup completes successfully but the following exception appears when we open work list, when K2 setup manager is opened for reconfiguration and when rendering any report on the report manager: “A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)” although all DB’s are created successfully during the installation for K2. Also all other features at K2 (any feature at Management Console) and Report Manager (deployment of reports, management of data sources, and folder/report settings) works perfectly.
When we remove K2 components from the server the reporting services works successfully again, without any reconfiguration.
We tried to move the server to new environment to check if there is a problem with the server itself, all installation and configuration are completed with no problems and the error message disappeared.
We did check all of below points:
• MSDTC configuration.
• All ports are open between the 2 servers.
• SQL connection is always successful between the 2 servers.
• We have a third server with MOSS 2007 installed and it works perfectly with problems in connection to DB.
• All users used for windows services and SQL windows connection are active and configured correctly.
o Have SQL login with dbcreator and SecurityAdmin roles.
o Are added as Administrators on Application server.
• We have tries Windows authentication and SQL authentication and they all gave the same problem.
• We have used a newer version of K2 installation files “K2 blackpearl 4.5 (4.10060.1.0) with KB001320” and it failed at the last steps of installation with the same problem.
Please help on this.
(full disclosure i work for K2) and looked through our system as well as the support forum and could not find a reference to this error. From the people i talked to it appears to be a general network issue, with quite a few possible causes, including something as simple as the network card. Although I am not 100% clear on a few points you made. When you said
"following exception appears when we open work list" Where are you opening the worklist from?
When you said
"When we remove K2 components from the server the reporting services works successfully again, without any reconfiguration."
Are you getting this error in SQL Reporting Services?
You can also post a question in http://k2underground.com someone else may have seen this.
Edit I asked around and there does not seem to be any good answers to this at the moment. Would you be willing to open a K2 support ticket and let us look at the K2 logs or see the config via livemeeting? Thanks!

How to change Msmq configuration from workgroup mode to domain mode?

There is a public queue named queue1 on machine A. I want to send messages to this queue from machine B. In order to achieve this, I wrote that c# code.
if (MessageQueue.Exists("machineA\queue1"))
{
label1.Text = "queue found";
}
else
{
label1.Text = "queue could not be found";
}
But Exists() method return false on machine B. The same code works well on machine C.
I found somethings related with msmq domain mode and workgroup mode. I think that msmq installed in workgoup mode on machine B.
How can I change this configuration from workgroup mode to domain mode?
HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\
Check the data for the REG_DWORD workgroup. Is it 1 or 0?
1 is workgroup mode.
0 is AD mode
Basically the difference between domain and work group mode is not defined by the value of the registry flag "workgroup" mentioned by #engin. This flag just reflects current operational mode but doesn't set it.
Whether you run in domain or workgroup mode is defined whether you installed MSMQ on domain controller or on a member server. Details about differences between these two modes can be found here: https://support.microsoft.com/en-us/kb/884974/
MSMQ 1.0 used to support domain mode only. Current MSMQ version is 5.0.
Next you may see quite interesting behavior when you installed MSMQ on your DC, your workgroup flag continuously reverts to 1 after each MSMQ service restart. This means that you have to grant Network Service account the Create MSMQ Configuration Objects permission to the computer object in Active Directory Domain Services before installing the Directory Services Integration feature on a computer that is a domain controller.
You may find details on how to do it here:
https://technet.microsoft.com/en-us/library/cc730960.aspx
MSMQ runs under the (less privileged) Network Service account instead of (all powerful) Local System account starting from version 4.0 (Vista/Server 2008)
So to answer #mkus question more directly to "set" domain mode you just install MSMQ on domain controller and make sure that proper permissions in place for Network Service account. Once this is done you well see it operating in domain mode with workgroup flag switched to 0 automatically to reflect this.
Also couple of links to clarify issues around MSMQ objects permissions and when/why you need to set them:
http://blogs.msdn.com/b/johnbreakwell/archive/2009/08/03/default-msmq-queue-permissions-have-changed-in-msmq-4-0.aspx. In short starting from MSMQ 4.0 Everyone and Anonymous Logon were removed from default MSMQ objects ACLs as precaution against DoS attacks (though there are exlusions to this change and Workgroup mode is one of those).
And as you may read in Technet article below you need to go a grant certain rigts to MSMQ objects either to Network Service OR to Computer accounts when installing the Routing Service feature on a Windows Server 2008 R2 (or later) computer that is not a domain controller OR when installing the Directory Service Integration feature of Message Queuing on a Windows Server 2008 R2 (or later) computer that is a domain controller. See details here:
https://technet.microsoft.com/en-us/library/cc749102(v=ws.10).aspx
Run Server Manager on the machine that is hosting the queue. Right-click on Features and click "add features"
Drill down under Message Queuing and under Message Queuing Services. You should see a checkbox for Directory Service Integration.
Check it and click install.
Usually you have to reboot the server for it to show the change.
I ran into some problems, no matter how much I installed or uninstalled MSMQ or restarted, I still wasn't able to use the queue. So I wanted to post some links here
http://support.microsoft.com/kb/935498
When it gets to a part about "To work around this problem, use the Active Directory Users and Computer Microsoft Management Console (MMC)...". Below is how you do that.
How to delete from active directory
http://technet.microsoft.com/en-us/library/cc773660(v=WS.10).aspx
"Delete stale computer objects" is the part you are interested in.
I also found this nice error in the event log "The Message Queuing service will not join the domain. An MSMQ Configuration (msmq) object exists in the new domain with an ID differing from the service ID. Please delete the MSMQ Configuration object in the new domain, restart the Message Queuing service, and log on again."- which helped to point out they way.
I have face this issue for windows server 2016, where even thought I was changing registry value to domain mode "0", it reverts to "1", after server restart.
To solve the issue on OS 2016, we need to uninstall below MSMQ feature as they are deprecated from OS 2016 onward.
Message Queuing Trigger
Multicasting support
Routing Service