我正在试图澄清亚马逊的SQS死信队列究竟在做什么.
据http://aws.typepad.com/aws/2014/01/amazon-sqs-new-dead-letter-queue.html
死信队列 - SQS队列的ARN(亚马逊资源名称),它将接收消费者收到最大数量后未成功处理的消息.
这听起来不像Poision Queue吗?关键的区别在于消费者确实收到了消息.当信息可能正常,但无法传递时,可能是由于服务中断而导致死信.http://www.eaipatterns.com/DeadLetterChannel.html
其中,因为这听起来像被成功地接收到该消息多次,但处理消息失败,这是我理解是有害消息队列的含义.
消息总线与队列
死信模式在普通旧队列的上下文中有不同的含义吗?由于SQS只是一个队列,而不是消息总线,因此它不负责传递消息.相反,它等待拾取(请求)消息.因此传统的死信模式并不真正适用,因为没有消息总线尝试传递消息而无法找到收件人.
SQS可以像消息总线一样吗?
是否有办法通过SQS设置通道和侦听器,而不是显式轮询来自队列的消息?
我们目前正在使用TeamCity进行CI构建,我们也正在尝试设置自动部署.
我目前正在尝试部署的项目是位于F5负载均衡器下的Windows服务.在未来,我们还希望自动部署我们的IIS网站,这些网站也位于F5之下.
从TeamCity我们可以执行PowerShell脚本来取消所需服务器上的Windows服务,将文件推送到它,然后重新安装服务.
但是,我无法弄清楚如何处理负载均衡器.我们希望一次禁用1个节点,监视要删除的所有连接,然后部署我们的代码并重新启动节点.
这似乎是一个非常普遍的问题,但我发现很少有关于如何做的信息.
谢谢!
回答
感谢Jonathon Rossi的iControl Powershell cmdlet!
对于其他用户的问题,这里有一个关闭,监视连接丢弃,推送代码,然后通过powershell脚本重新打开F5负载均衡器的示例
要使这些脚本正常工作,您首先必须从下面的答案中提供的链接安装F5 iControl cmdlet
#PULL IN OUR F5 UTILITY FUNCTIONS
. .\F5Functions.ps1
#DEFINE LOGIC TO DEPLOY CODE TO A NODE THAT HAS ALREADY BEEN REMOVED FROM THE LOAD BALANCER
function Deploy(
[F5Node]$Node
)
{
Write-Host "Deploying To: "$Node.Name
#TODO: Remotely shut down services, push code, start back up services
}
#DEFINE NODES
$nodes = @()
$nodes += New-Object F5Node -ArgumentList @("TestNode1", "1.1.1.1")
$nodes += New-Object F5Node -ArgumentList @("TestNode2", "1.1.1.2") …Run Code Online (Sandbox Code Playgroud) .net powershell continuous-integration f5 continuous-deployment
我在两个应用程序之间共享一个sql-server 2010数据库.我们控制的一个应用程序,另一个应用程序是首先创建数据库的第三方应用程序.我们的应用程序是基于第三方Webmail应用程序构建的CRM.
该数据库包含varchar列,并且是latin-1编码的.第三方应用程序是用PHP编写的,并不关心正确编码数据,所以它将utf-8编码的字节填充到varchar列中,在那里它们被解释为latin-1并且看起来像垃圾.
我们的CRM应用程序是用.Net编写的,它自动检测数据库排序规则与内存中字符串的编码不同,因此当.Net写入数据库时,它会转换字节以匹配数据库编码.
所以...从我们的应用程序写入数据库的数据在数据库中看起来是正确的,但来自第三方应用程序的数据却没有.
当我们的应用程序写入FirstName =Céline时,它将作为Céline存储在数据库中
当webmail应用程序写入FirstName =Céline时,它将作为Céline存储在db中
我们的CRM应用程序需要显示在任一系统中创建的联系人.所以我正在编写一个EncodingSniffer类,它查找标记的字符,指示其编码不良的字符串并转换它们.
目前我有:
private static string[] _flaggedChars = new string[] {
"é"
};
这对于显示Céline作为Céline很有用,但我需要添加到列表中.
有没有人知道一个资源,以获得utf-8特殊字符可以解释为iso-8859-1的所有可能方式?
谢谢
澄清: 因为我在.Net工作.当从数据库加载到内存中时,该字符串将转换为Unicode UTF-16.因此,无论它是否在数据库中正确编码.它现在表示为UTF16字节.我需要能够分析UTF-16字节,并确定它们是否因为utf-8字节被塞入iso-8859-1数据库而被搞砸了....清楚如泥吧?
这是我到目前为止所拥有的.它清理了大多数错误编码字符的显示,但我仍然遇到É问题:Éric通过webmail存储在数据库中,但是在检测到错误编码并将其更改回来后,它显示为 ? ric看着有2500个联系人的用户,其中有数百个有编码问题,É是唯一没有正确显示的东西......
public static Regex CreateRegex()
{
string specials = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö";
List<string> flags = new List<string>();
foreach (char c in specials)
{
string interpretedAsLatin1 = Encoding.GetEncoding("iso-8859-1").GetString(Encoding.UTF8.GetBytes(c.ToString())).Trim();//take the specials, treat them as utf-8, interpret them as latin-1
if (interpretedAsLatin1.Length > 0)//utf-8 chars made up of 2 bytes, interpreted as two single byte latin-1 …Run Code Online (Sandbox Code Playgroud) 在c#中,您可以像这样创建自定义索引器
public object this[string name]
{
}
Run Code Online (Sandbox Code Playgroud)
我正在使用一个javascript小部件库,它有一个小部件,它将一个对象的aray作为一个名为label的属性
new Thingy({
labels: [{value:1, text:"my label"},[{value:2, text:"my next label"}]
});
Run Code Online (Sandbox Code Playgroud)
问题是您必须提前计划以确切知道所有需要标签的值.例如,在上面的示例中,我知道标签将用于值1和2.但是如果我不知道值可能是什么,我希望能够根据值动态创建文本试图访问
所以当库内部尝试访问时:
this.labels[n].text
Run Code Online (Sandbox Code Playgroud)
我想this.labels [n]做类似的事情
function(n){return {text: "label for " + n};}
Run Code Online (Sandbox Code Playgroud)
这可能在javascript语言的范围内吗?
我将SlowCheetah下载到旧的.Net 3.5 Web表单应用程序中,以便将转换添加到web.config.
我已经将SlowCheetah与Windows服务和控制台应用程序一起使用,以便在过去成功转换app.config.在这些情况下,配置将被转换并作为ApplicationName.exe.config放入bin中.
但是,使用此Web表单应用程序时,配置文件永远不会在bin中结束,因为Web表单站点是使用.dll放在bin中而构建的,IIS指向根目录以运行站点.因此,不是将web.config包含在构建过程中并打包在bin中,而是将其单独留在根位置.
没有转换应用于根目录中的web.config,这是一件好事,因为根目录中的web.config位于源代码管理中,并且是我们执行转换的文件.
我很高兴将web.config包含在构建中,以便slowCheetah转换它然后将其放入bin中.然后我们必须手动将它从bin中取出并将其放回到我们服务器的根级别,但是进行转换是值得的.
有没有人知道如何让变换运行我的web.config或将其包含在构建过程中,以便slowCheetah可以发挥其魔力?
谢谢!
更新
我修改了web.config的属性,它现在包含在构建中,但是,转换仍未应用于它.
构建操作:嵌入式资源
复制到输出控制器:始终复制
我正在使用Entity Framework Database First,但我想从Code First范例中复制以下行为:
在实体框架代码中,您可以按照以下方式执行操作:
public class Thing
{
public int ID { get; set; }
ICollection<Stuff> Stuffs { get; set; }
}
public class Stuff
{
public int ID { get; set; }
ICollection<Thing> Things { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并且数据库将生成和Associative表来表示多对多的关系.
我正在使用Database First和遗留数据库.我引入了实体,它包含了表示两个表之间多对多关系的关联表.
由于关联表作为实体包含在内,因此导航属性如下:
public class Thing
{
public int ID { get; set; }
public ICollection<ThingStuff> ThingStuffs { get; set; }
}
public class ThingStuff
{
public int ThingID { get; set; }
public int StuffID { …Run Code Online (Sandbox Code Playgroud) entity-framework database-first ef-database-first .net-4.5 entity-framework-5
我一直试图弄清楚它是如何在低级别上运行的:
[Authorize]
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
基本上,上面的代码片段似乎拦截了对Index方法的调用,执行授权检查,以及如果未经授权则抛出和异常.该异常可防止调用Index方法中的代码.
这看起来很像AOP,并不是C#中容易做到的.如果我要实现我自己的扩展System.Attribute的类,我就没有任何接口可以挂接到我的属性修饰的方法的前或后调用.那么MVC Authorize属性如何做到这一点,我怎么能自己做呢?
PostSharp是一个使用IL Weaving完成同样事情的库.基本上,在编译时,PostSharp会扫描程序集以查找使用某些属性修饰的方法,然后重新编写代码以使用其他方法调用包装方法调用.
MVC框架是否也在编译时执行某种IL编织?我有可能进行自己的IL编织吗?或者是否有其他技术可以应用相同的AOP原则而无需复杂的IL编织?
我试图找到关于IL Weaving的信息,但我找到的只是关于PostSharp的文章.由于许可麻烦,我宁愿远离PostSharp,而且,我只是想知道他们为我自己作为开发人员的成长做了多少.这真是令人着迷.
我试图找到一种方法将MySql数据库版本置于源代码控制之下。过去,在使用SQL Server时,我在Visual Studio中使用了“ SQL Server数据库项目”项目类型。
有什么方法可以使该项目类型与MySql .Net Connector一起使用?
如果没有,是否还有其他方法可以在.Net中创建MySql数据库项目?
更新:
我发现dbForge在专业版中具有数据库项目。它完成了我需要做的所有事情。使我们能够将架构移至源代码控制中,使我们能够生成脚本来更新到新版本或回滚到旧版本等。UI几乎与Visual Studio数据库项目完全相同。
我仍然将这个问题搁置一段时间,以防万一有人知道免费的替代方法。
我有一个powershell脚本(.ps1),我告诉TeamCity运行以部署一些应用程序.
问题是,当TeamCity执行脚本时,某些模块不可用.
Teamcity从这里调用powershell:
C:\ WINDOWS****Syswow64资料\ WindowsPowerShell\V1.0\powershell.exe
但它应该从这里调用powershell:
C:\ WINDOWS****System32下\ WindowsPowerShell\V1.0\powershell.exe
无论哪种方式调用脚本,它仍然在同一目录中查找模块,但由于某种原因,从SysWOW64调用时它不起作用
C:\ WINDOWS\SYSTEM32\WindowsPowerShell\V1.0\powershell.exe
PS C:\Users\Administrator.WTLDMZ> C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File C:\BuildScripts\ExampleFail.ps1
Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules
ModuleType Name ExportedCommands
---------- ---- ----------------
Manifest ADRMS {Update-ADRMS, Uninstall-ADRM...
Manifest AppLocker {Set-AppLockerPolicy, Get-App...
Manifest BestPractices {Get-BpaModel, Invoke-BpaMode...
Manifest BitsTransfer {Add-BitsFile, Remove-BitsTra...
Manifest CimCmdlets {Get-CimAssociatedInstance, G...
Script ISE {New-IseSnippet, Import-IseSn...
Manifest Microsoft.PowerShell.Diagnostics {Get-WinEvent, Get-Counter, I...
Manifest Microsoft.PowerShell.Host {Start-Transcript, Stop-Trans...
Manifest Microsoft.PowerShell.Management {Add-Content, Clear-Content, ...
Manifest Microsoft.PowerShell.Security {Get-Acl, Set-Acl, Get-PfxCer...
Manifest Microsoft.PowerShell.Utility {Format-List, Format-Custom, ...
Manifest Microsoft.WSMan.Management {Disable-WSManCredSSP, Enable...
Script PSDiagnostics …Run Code Online (Sandbox Code Playgroud) .net ×3
powershell ×2
.net-4.5 ×1
amazon-sqs ×1
aop ×1
arrays ×1
asp.net-3.5 ×1
asp.net-mvc ×1
c# ×1
encoding ×1
f5 ×1
iso-8859-1 ×1
javascript ×1
json ×1
message-bus ×1
msbuild ×1
mysql ×1
postsharp ×1
slowcheetah ×1
teamcity ×1
teamcity-7.1 ×1
utf-8 ×1
webforms ×1