小编inq*_*ive的帖子

Amazon SQS消息多传递

我知道,为了带来巨大的可扩展性和可靠性,SQS可以进行广泛的资源并行化.它使用冗余服务器甚至是小队列,甚至发布到队列的消息也作为多个副本冗余存储.这些是阻止它像RabbitMQ那样完全一次交付的因素.我看到甚至已删除的消息正在传递.

对开发人员的影响是他们需要为多个消息传递做好准备.亚马逊声称这不是一个问题,但事实上,开发人员必须使用一些同步构造,如数据库事务锁或dynamo-db条件写.这两者都降低了可扩展性.

问题是,

鉴于重复传递问题,消息不可见时段功能如何保持?该邮件不保证不可见.如果开发者必须自己安排同步,那么隐形期间会带来什么好处.我已经看到消息重新传递,即使它们应该是隐形的.

编辑

这里我包括一些参考

  1. 使用Amazon SQS实现"完全一次交付"行为的良好做法是什么?
  2. http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message
  3. http://aws.amazon.com/sqs/faqs/#How_does_Amazon_SQS_allow_multiple_readers_to_access_the_same_message_queue_without_losing_messages_or_processing_them_many_times
  4. http://aws.amazon.com/sqs/faqs/#Can_a_deleted_message_be_received_again

message-queue amazon-sqs amazon-web-services

27
推荐指数
1
解决办法
8908
查看次数

在WCF中过早处理MessageBodyStream

我正在使用WCF下载一个非常长的文件.它是net-tcp绑定的自托管服务.在客户端上,我正在读取流并将其写入后台线程中的磁盘.在UI上,有一个取消按钮.我用a取消了读写循环CancellationToken.

问题是,

如果Stream过早(不是EOF)那么处理它需要很长时间.

在服务器(c#):

IO.Stream getFile(string filePath) {
    return new IO.FileStream(filePath);
}
Run Code Online (Sandbox Code Playgroud)

在客户端(vb):

using proxy as new ServiceReference1.TestServer
    using wcfStrm = proxy.getFile("c:\100MB.dat")
        using fileStrm = new FileStream("d:\destination\100MB.dat")

            dim buff(256) as new Byte

            while true
                cancellationToken.ThrowIfCancellationRequested

                Dim len = wcfStrm.Read(buff, 0, buff.Length)

                if len > 0 then
                    fileStrm.write(buff, 0, len)
                else
                    exit while
                end if
             end while

         end using      
    end using ' <-------------- this hangs for 10Mins
end using
Run Code Online (Sandbox Code Playgroud)

CancellationToken抛出时OperationCancelledException,所有三个使用块都试图处理它们的资源.现在,当第二个使用块尝试处理时MessageBodyStream,它会挂起10分钟.但如果完全读取流,则会快速退出.

我怀疑,它与ReceiveTimeout10分钟有关.所以我改为30秒和中提琴!处置现在需要30秒. …

.net streaming wcf dispose timeout

6
推荐指数
1
解决办法
936
查看次数

ResolveEventArgs.RequestingAssembly 为 Null

我正在尝试通过反射动态加载程序集。我有这样的文件夹结构:

project
  \-- BIN
       |-- myApp.exe
       |-- SOMEEXTENTION1
       |    |-- someExtention1.dll
       |    \-- itsDependency1.dll
       |         
       |-- SOMEEXTENTION2
            |-- someExtention2.dll
            \-- itsDependency2.dll
Run Code Online (Sandbox Code Playgroud)

我可以使用反射加载一些扩展。在执行过程中someExtention查找itsDependency时会出现问题。点网在 BIN 文件夹中查找。它在那里找不到它。Appdomain 的 AssemblyResolve 事件被引发...

我正在捕获这个事件。在 ResolveEventArgs 中,我获取需要加载的程序集的名称。问题是我没有得到 RequestingAssembly。ResolveEventArgs 的该属性始终为空。我需要请求程序集,以便我可以直接查看其自己的 EXTN 文件夹。如果没有它,我必须查看所有 EXTN 文件夹,就我而言,这些文件夹可能非常大。

RequestingAssembly 有一个属性 Location,根据这篇 msdn 文章,它包含物理文件的路径。本文还介绍了该属性可能为 Nothing 的情况。我不明白那里讨论的负载上下文。

任何帮助将不胜感激...

.net reflection assemblies assemblyresolve

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

如何在 SpringBoot WebFlux 中使用 GET 请求注销

如何配置securityWebFilterChain(ServerHttpSecurity http) 以便我的应用程序注销GET /logout

我有SpringBoot 2 Spring 5WebFlux

我试过:

  http
    .logout()
      .requiresLogout(ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, "/logout"))
      .logoutSuccessHandler(logoutSuccessHandler("/after-life"))

Run Code Online (Sandbox Code Playgroud)

问题是, a 的LogoutPageGeneratingWebFilter位置早于LogoutWebFilter发出的 中的SecurityWebFilterChain。其中有一个硬编码.pathMatchers(HttpMethod.GET, "/logout")- 这导致我的应用程序总是在 GET 请求上发出 html 页面。

我发现没有办法抑制自动注销页面生成:(

java spring-security spring-boot spring-webflux

4
推荐指数
1
解决办法
2354
查看次数