gpt4 book ai didi

msmq - 使用Spring.NET配置确认

转载 作者:行者123 更新时间:2023-12-04 04:36:06 24 4
gpt4 key购买 nike

有没有一种使用Spring.NET配置确认的方法?

在代码中,它看起来像这样:

var msgQ = new MessageQueue(OrdersQueueName)
{
DefaultPropertiesToSend =
{
AcknowledgeType = AcknowledgeTypes.FullReachQueue |
AcknowledgeTypes.FullReceive,
AdministrationQueue = new MessageQueue(AckQueueName)
}
};

可以用 ProductTemplate完成吗?其他方式?

最佳答案

对我而言,此配置有效:

<objects xmlns="http://www.springframework.net">

<!-- for http://stackoverflow.com/questions/3491152/configuring-acknowledgements-with-spring-net -->

<object name="orders" type="q3491152.MessageQueue, q3491152">
<property name="Name" value="orders-from-xml" />
<property name="DefaultPropertiesToSend">
<object type="q3491152.PropertiesToSend, q3491152">
<property name="AdministrationQueue" ref="anotherQ" />
<property name="AcknowledgeType"
expression="T(q3491152.AcknowledgeTypes).FullReachQueue or T(q3491152.AcknowledgeTypes).FullReceive" />
</object>
</property>
</object>

<object name="anotherQ" type="q3491152.MessageQueue, q3491152">
<property name="Name" value="anotherQ" />
</object>

</objects>

在此示例中,我模拟了(显然)msmq类的相关部分。
我使用 expression对枚举进行逐位比较。

如果您使用 AcknowledgeTypeSpring.Core.TypeResolution.TypeRegistry一起 register the TypeRegistry.RegisterType("AcknowledgeTypes", typeof(AcknowledgeTypes)); ,则表达式进一步简化为:

<property name="AcknowledgeType" 
expression="AcknowledgeTypes.FullReachQueue or AcknowledgeTypes.FullReceive" />

我已经针对Spring.NET 1.3.1使用以下程序对其进行了测试:

using System;
using Spring.Context;
using Spring.Context.Support;

namespace q3491152
{
internal class Program
{
private static void Main(string[] args)
{
IApplicationContext ctx = new XmlApplicationContext("objects.xml");

var qFromCode = new MessageQueue
{
Name="orders-from-code",
DefaultPropertiesToSend =
{
AcknowledgeType = AcknowledgeTypes.FullReachQueue |
AcknowledgeTypes.FullReceive,
AdministrationQueue = new MessageQueue()
}
};

var qFromXml = (MessageQueue) ctx.GetObject("orders");

PrintQ(qFromCode);
PrintQ(qFromXml);

Console.ReadLine();
}

private static void PrintQ(MessageQueue q)
{
Console.WriteLine("Q: {0}; AcknowledgeType: {1}", q.Name, q.DefaultPropertiesToSend.AcknowledgeType);
}
}

public class MessageQueue
{
public MessageQueue()
{
DefaultPropertiesToSend = new PropertiesToSend();
}

public string Name { get; set; }
public PropertiesToSend DefaultPropertiesToSend { get; set; }
}


public class PropertiesToSend
{
public AcknowledgeTypes AcknowledgeType { get; set; }
public MessageQueue AdministrationQueue { get; set; }
}

[Flags]
public enum AcknowledgeTypes
{
None = 0,
FullReachQueue,
FullReceive
}
}

哪个输出:

Q: orders-from-code; AcknowledgeType: FullReachQueue, FullReceive
Q: orders-from-xml; AcknowledgeType: FullReachQueue, FullReceive

关于msmq - 使用Spring.NET配置确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com