Browse Source

supports one method subscribing multiple messages.

master
Savorboard 7 years ago
parent
commit
2eaca6644d
1 changed files with 17 additions and 14 deletions
  1. +17
    -14
      src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs

+ 17
- 14
src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs View File

@@ -58,13 +58,7 @@ namespace DotNetCore.CAP.Internal
continue;
}

foreach (var method in typeInfo.DeclaredMethods)
{
var topicAttr = method.GetCustomAttribute<TopicAttribute>(true);
if (topicAttr == null) continue;

executorDescriptorList.Add(InitDescriptor(topicAttr, method, typeInfo));
}
executorDescriptorList.AddRange(GetTopicAttributesDescription(typeInfo));
}
return executorDescriptorList;
}
@@ -82,18 +76,27 @@ namespace DotNetCore.CAP.Internal
//double check
if (!Helper.IsController(typeInfo)) continue;

foreach (var method in typeInfo.DeclaredMethods)
{
var topicAttr = method.GetCustomAttribute<TopicAttribute>(true);
if (topicAttr == null) continue;

executorDescriptorList.Add(InitDescriptor(topicAttr, method, typeInfo));
}
executorDescriptorList.AddRange(GetTopicAttributesDescription(typeInfo));
}

return executorDescriptorList;
}

private static IEnumerable<ConsumerExecutorDescriptor> GetTopicAttributesDescription(TypeInfo typeInfo)
{
foreach (var method in typeInfo.DeclaredMethods)
{
var topicAttrs = method.GetCustomAttributes<TopicAttribute>(true);

if (topicAttrs.Count() == 0) continue;

foreach (var attr in topicAttrs)
{
yield return InitDescriptor(attr, method, typeInfo);
}
}
}

private static ConsumerExecutorDescriptor InitDescriptor(
TopicAttribute attr,
MethodInfo methodInfo,


Loading…
Cancel
Save