小编Mic*_*ael的帖子

亚马逊SQS死信队列:它真的是死信还是毒药?

我正在试图澄清亚马逊的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设置通道和侦听器,而不是显式轮询来自队列的消息?

message-queue amazon-sqs amazon-web-services message-bus

17
推荐指数
2
解决办法
8814
查看次数

自动部署到F5负载平衡环境

我们目前正在使用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

12
推荐指数
1
解决办法
4088
查看次数

检测错误的UTF-8编码:要嗅探的坏字符列表?

我在两个应用程序之间共享一个sql-server 2010数据库.我们控制的一个应用程序,另一个应用程序是首先创建数据库的第三方应用程序.我们的应用程序是基于第三方Webmail应用程序构建的CRM.

该数据库包含varchar列,并且是latin-1编码的.第三方应用程序是用PHP编写的,并不关心正确编码数据,所以它将utf-8编码的字节填充到varchar列中,在那里它们被解释为latin-1并且看起来像垃圾.

我们的CRM应用程序是用.Net编写的,它自动检测数据库排序规则与内存中字符串的编码不同,因此当.Ne​​t写入数据库时​​,它会转换字节以匹配数据库编码.

所以...从我们的应用程序写入数据库的数据在数据库中看起来是正确的,但来自第三方应用程序的数据却没有.

当我们的应用程序写入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)

encoding utf-8 iso-8859-1

9
推荐指数
1
解决办法
6889
查看次数

Javascript自定义索引访问器

在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语言的范围内吗?

javascript arrays json

8
推荐指数
1
解决办法
1657
查看次数

在3.5 Web窗体应用程序中使用SlowCheetah配置转换Web.config

我将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的属性,它现在包含在构建中,但是,转换仍未应用于它.

构建操作:嵌入式资源

复制到输出控制器:始终复制

msbuild webforms asp.net-3.5 slowcheetah

7
推荐指数
1
解决办法
2642
查看次数

实体框架DB首先:将关联表转换为导航属性

我正在使用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

5
推荐指数
1
解决办法
1513
查看次数

解释MVC授权属性如何执行类似AOP的操作

我一直试图弄清楚它是如何在低级别上运行的:

[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,而且,我只是想知道他们为我自己作为开发人员的成长做了多少.这真是令人着迷.

.net c# asp.net-mvc aop postsharp

5
推荐指数
1
解决办法
729
查看次数

相当于SQL Server数据库项目的MySql

我试图找到一种方法将MySql数据库版本置于源代码控制之下。过去,在使用SQL Server时,我在Visual Studio中使用了“ SQL Server数据库项目”项目类型。

有什么方法可以使该项目类型与MySql .Net Connector一起使用?

如果没有,是否还有其他方法可以在.Net中创建MySql数据库项目?

更新:

我发现dbForge在专业版中具有数据库项目。它完成了我需要做的所有事情。使我们能够将架构移至源代码控制中,使我们能够生成脚本来更新到新版本或回滚到旧版本等。UI几乎与Visual Studio数据库项目完全相同。

我仍然将这个问题搁置一段时间,以防万一有人知道免费的替代方法。

.net mysql visual-studio-2013

5
推荐指数
1
解决办法
1641
查看次数

通过-File参数运行时,Powershell脚本无法找到模块

我有一个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)

powershell teamcity teamcity-7.1

3
推荐指数
1
解决办法
1913
查看次数